首页 > 代码库 > Hibernate复习(六)检索策略

Hibernate复习(六)检索策略

1.立即检索策略

默认的检索策略。

缺点:

select语句的数目太多,需要频繁的访问数据库,会影响检索性能。如果需要查询n个Customer对象,那么必须执行n+1次select查询语句。

这种检索策略没有利用SQL的连接查询功能。利用left join 只需一条sql语句既可以实现N+1次查询的结果。并且可能造成内存空间的浪费。

2.延迟策略

在一对多关联级别中对于<set>元素,应该优先考虑使用延迟检索策略。

? 优点 
– 由应用程序决定需要加载哪些对象,可以避免执行多余的select语句,以及避免加载应用程序不需要访问的对象。因此能提高检性能,并且能节省内存空间。 
? 缺点   
– 应用程序如果希望访问游离状态的代理类实例,必须保证它在持久化状态时已经被初始化。   
? 适用范围 
– 一对多或者多对多关联。 

– 应用程序不需要立即访问或者根本不会访问的对象。

3.左外连接检索策略

? 在多对一关联级别中对于默认情况下,多对一关联使用左外连接检索策略。 
? 如果把Order.hbm.xml文件的<many-to-one>元素的outer-join属性设为true,总是使用左外连接检索策略。

? 优点 
– 1.对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便的从一个对象导航到与它关联的对象。 
– 2.使用了外连接,select语句数目少。 
? 缺点 
– 1.可能会加载应用程序不需要访问的对象,白白浪费许多内存空间。 
– 2.复杂的数据库表连接也会影响检索性能。   
? 适用范围 
– 1.多对一或者一对一关联。 
– 2.应用程序需要立即访问的对象。 
– 3.数据库系统具有良好的表连接性能 

4.备注:

Hibernate允许在应用程序中覆盖映射文件中设定的检索策略,由应用程序在运行时决定检索对象图的深度。




欢迎大家一起讨论学习!

有用的自己收!

记录与分享,让你我共成长!欢迎查看我的其他博客;我的博客地址:http://blog.csdn.net/caicongyang