Hibernate 三种检索策略

1)立即检索
优点:对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便的从一个对象导航到与它关联的对象;

缺点: (1)select语句太多;

            (2)可能会加载应用程序不需要访问的对象白白浪费许多内存空间;

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

         在应用逻辑只需要访问Emp对象,而不需要访问Dept对象的场合,加载Dept对象完全是多余的操作,这些多余的Dept对象白白浪费了许多内存空间

2)延迟检索

优点:由应用程序决定需要加载哪些对象,可以避免可执行多余的select语句,以及避免加载应用程序不需要访问的对象。因此能提高检索性能,并且能节省内存空间;

缺点:应用程序如果希望访问游离状态代理类实例,必须保证他在持久化状态时已经被初始化;

说明:<set  name="dept"   inverse="true"    lazy="true" >

适用范围:(1)一对多或者多对多关联。(2)应用程序不需要立即访问或者根本不会访问的对象。


3 )迫切左外连接检索

优点:(1)对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便地冲一个对象导航到与它关联的对象。

          (2)使用了外连接,select语句数目少;

缺点:(1) 可能会加载应用程序不需要访问的对象,白白浪费许多内存空间;

           (2)复杂的数据库表连接也会影响检索性能;

说明:Dept.hbm.xml文件的<many-to-one name="dept" class="com.hlx.entity.Dept" fetch="join">则使用迫切左外连接检索策略。

适用范围:
(1)多对一或者一对一关联。
(2)应用程序需要立即访问的对象。
(3数据库系统具有良好的表连接性能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值