Hibernate为什么一定要做关联映射?
2007-05-23 22:39
375 查看
我用Hibernate也有半年了,感觉Hibernate的映射关系太复杂了,与懒性加载,反转控制等结合在一起,要想控制好,实非常人之所能。个人感觉,如果不用Hibernate的关联,就把它当作关系数据库来操作,使用和理解上都会方便不少,例如一个订单和产品的配置文件写成这样:
<hibernate-mapping>
<class name="db.Order" table="orders" catalog="sample">
<id name="id" type="java.lang.String">
<column name="ID" length="32" />
<generator class="uuid.hex" />
</id>
<property name="orderTitle" type="java.lang.String">
<column name="ORDER_TITLE" length="30" />
</property>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="db.Product" table="products" catalog="sample">
<id name="id" type="java.lang.String">
<column name="ID" length="32" />
<generator class="uuid.hex" />
</id>
<property name="productTitle" type="java.lang.String">
<column name="PRODUCT_TITLE" length="30" />
</property>
<property name="orderId" type="java.lang.String">
<column name="ORDER_ID" length="32" />
</property>
</class>
</hibernate-mapping>
操作时:
Order o=new Order();
o.setOrderTitle("order1");
dao.saveOne(o);
Product p=new Product();
p.setProductTitle("product1");
p.setOrderId(o.getId());
dao.saveOne(p);
(查询略)
这样一来,纯粹是用关系数据库的思想来使用Hibernate,一个类对应一个数据库表,表之间的约束交给数据库的键来控制, 这样一来,即得到了Hibernate的优点:不用手工写SQL,对象级别缓存,数据库可移植性,也不必费力地学习和理解它了,纯粹是一个薄薄的JDBC的包装; 缺点就是不能在HQL中写出"...object1.object2.object3..." 式的对象引用,但我认为相对于理解它复杂的配置来说,这点牺牲还是值得的, Hibernate的高级特性当然没法用上了,但相比于直接用JDBC或用ibatis写SQL总要好得多,在新手多、工期短的项目中,可节省很多培训时间,请问我的这种想法是否可行?
<hibernate-mapping>
<class name="db.Order" table="orders" catalog="sample">
<id name="id" type="java.lang.String">
<column name="ID" length="32" />
<generator class="uuid.hex" />
</id>
<property name="orderTitle" type="java.lang.String">
<column name="ORDER_TITLE" length="30" />
</property>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="db.Product" table="products" catalog="sample">
<id name="id" type="java.lang.String">
<column name="ID" length="32" />
<generator class="uuid.hex" />
</id>
<property name="productTitle" type="java.lang.String">
<column name="PRODUCT_TITLE" length="30" />
</property>
<property name="orderId" type="java.lang.String">
<column name="ORDER_ID" length="32" />
</property>
</class>
</hibernate-mapping>
操作时:
Order o=new Order();
o.setOrderTitle("order1");
dao.saveOne(o);
Product p=new Product();
p.setProductTitle("product1");
p.setOrderId(o.getId());
dao.saveOne(p);
(查询略)
这样一来,纯粹是用关系数据库的思想来使用Hibernate,一个类对应一个数据库表,表之间的约束交给数据库的键来控制, 这样一来,即得到了Hibernate的优点:不用手工写SQL,对象级别缓存,数据库可移植性,也不必费力地学习和理解它了,纯粹是一个薄薄的JDBC的包装; 缺点就是不能在HQL中写出"...object1.object2.object3..." 式的对象引用,但我认为相对于理解它复杂的配置来说,这点牺牲还是值得的, Hibernate的高级特性当然没法用上了,但相比于直接用JDBC或用ibatis写SQL总要好得多,在新手多、工期短的项目中,可节省很多培训时间,请问我的这种想法是否可行?
相关文章推荐
- hibernate使用关联映射的优劣比较:为什么用Hibernate时一定要做关联映射?
- Hibernate 关系映射、多向关联
- Java的Hibernate框架中一对多的单向和双向关联映射
- Hibernate 一对多关联映射(双向关联)
- hibernate关联映射-单向
- 【Hibernate步步为营】--双向关联一对一映射详解(二)
- 【Hibernate步步为营】--双向关联一对一映射详解(二)
- hibernate一对一唯一外键关联单向映射
- Hibernate 、多表关联映射 - 一对一关系映射(one- to-one)
- hibernate学习_关联映射
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
- Hibernate读书笔记-----Hibernate的关联映射之N-1关联映射
- Hibernate(九)实现一对一关联映射关系
- Hibernate读书笔记-----Hibernate的关联映射之组件属性关联关系
- hibernate中的关联映射图解----一对一唯一外键
- 一口一口吃掉Hibernate(五)——一对多单向关联映射
- Hibernate 关联映射 之多对一关联(一)
- Hibernate 关联映射 之 一对多单项关联 (一)
- Hibernate中的几种映射关系----------多对一关联映射
- Hibernate读书笔记-----Hibernate的关联映射之N-N关联映射