Hibernate的检索策略

Hibernate提供了3种检索策略:
1.立即检索策略
2.延迟策略
3.迫切连接检索

立即检索:

所谓立即检索就是立即装载和初始化检索方法指定的对象,即使Session关闭了,依然可以被正常访问.立即检索策略的启用是通过在映射配置文件中将lazy属性值得设置为"false"来实现的.在Hibernate3.0中lazy的默认值为"true"(延迟检索),如果要启用立即检索策略,就必须手动将lazy设置为"false".
在ORM映射文件的<class>标签中设置lazy属性则表示该持久化类启用何种检索策略,如lazy="false"(立即检索)或lazy="true"(延迟检索).在类级别上,一般启用立即检索策略,因为在加载了持久化对象后会立即访问它.
在ORM映射文件的<set>标签中设置lazy属性则表示对该持久化类的关联对象启用何种检索策略,如lazy="false"(立即检索)lazy="true"(延迟检索).在类关联级别上,一般启用延迟检索策略,因为在加载了持久化对象后大多不会立即访问其关联对象,况且当关联对象数量巨大时,将其装载入内存开销也很大.为了减少查询次数,可以采用Hibernate的批量检索功能,即在<set>标签上设置batch-size属性值设定批量大小.


延迟检索:

延迟检索是Hibernate3.0默认的检索策略,所谓延迟检索就是等到访问的时候才装载和初始化指定的对象.如果在Session实例关闭之前没有初始化延迟检索出来的对象,Session实例关闭后再访问时,就会抛出异常,因此启用了延迟检索策略后,在访问指定对象前应确保该对象已被成功初始化.
在ORM映射文件的<class>标签设置lazy="true"则表示对该持久化类启用延迟检索策略,在<set>标签中设置lazy="true"则表示对该持久化类的关联对象启用延迟检索策略.
为了确保延迟检索的对象在Session关闭后仍然能被正常访问,可以使用Hibernate的isInitialized(Object obj)
用于判断某对象是否被初始化,再用initialize(Object obj)对指定的对象进行初始化处理.


迫切左外检索连接检索:

迫切左外连接检索策略就是充分利用SQL的外连接查询功能,减少Select语句的数目,提高检索效率.在Hibernate中若要启用迫切左外连接检索策略,只需要将所属标签的outer-join属性设置为"true"即可.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值