ORM框架(Object Relational Mapping)浅析
对象关系映射(Object Relational Mapping),简称ORM
一、概念解析
对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要帮助实现程序对象到关系数据库数据的映射。将面向对象语言程序中的对象自动持久化到关系数据库中。它的本质上就是将数据从一种形式转换到另外一种形式。因为在数据库中,尤其是关系型数据库. 是没有对象概念的,有的只是表格, 和数据记录。
一个简单的映射例子(hibernate),我们定义User对象和数据库中user表之间的关联,user表中只有两列:id和name:
<hibernate-mapping>
<class name="sample.orm.hibernate.User" table="user" catalog="test">
<id name="userID" type="java.lang.Integer">
<column name="id" />
<generator class="assigned" />
</id>
<property name="userName" type="java.lang.String">
<column name="name" />
</property>
</class>
</hibernate-mapping>
<class name="sample.orm.hibernate.User" table="user" catalog="test">
<id name="userID" type="java.lang.Integer">
<column name="id" />
<generator class="assigned" />
</id>
<property name="userName" type="java.lang.String">
<column name="name" />
</property>
</class>
</hibernate-mapping>
二、实际应用
1、在Mybatis中的逆向工程(反向生成实体映射)。因为Mybatis本身就属于一种半自动化的ORM框架,通过关系映射来生成实体类、接口、Mappering映射文件
常见的ORM框架有:Hibernate、TopLink、Castor JDO、Apache OJB等。
三、与传统JDBC的区别
1、简化代码
ORM是对象和关系型数据库映射,是把Java中的JavaBean对象和数据库表进行映射,使数据库表中的记录和JavaBean对象一一对应,从而大大简化原来直接使用JDBC时,手工拼写SQL带来的不便。
2、提高效率
ORM通过配置文件,使数据库表和JavaBean类对应起来,提供简便的操作方法,增、删、改、查记录,不再拼写字符串生成SQL,编程效率大大提高,同时减少程序出错机率,增强数据库的移植性,方便测试。但是原生的JDBC具有更强的灵活性,适合复杂多变的SQL应用。