Hibernate检索策略
-------------------siwuxie095
Hibernate 检索策略
以客户和联系人为例(下同)
1、Hibernate 检索策略分为两类
(1)立即检索
如:根据 id 查询,调用 get() 方法,一调用 get() 方法,
马上发送 sql 语句查询数据库
(2)延迟检索
如:根据 id 查询,还有 load() 方法,调用 load() 方法,
不会马上发送 sql 语句查询数据库。只有在得到对象中的
值时,才会发送 sql 语句查询数据库
2、延迟检索也分为两类
(1)类级别延迟
如:根据 id 查询,调用 load() 方法,返回实体类对象,
不会马上发送 sql 语句
(2)关联级别延迟
如:查询某个客户,再查询这个客户的所有联系人,查
询客户的所有联系人的过程是否需要延迟,称这个过程
为关联级别延迟
3、关联级别延迟操作
(1)在映射配置文件中进行配置
如:根据客户得到所有联系人,需要在客户的映射配置文件中进行配置
(2)在 set 标签上配置两个属性
1)fetch 属性:默认为 select
2)lazy 属性:true:延迟(默认);false:不延迟;extra:加强延迟,极其懒惰
(3)默认情况下,延迟
(4)lazy 的值为 false 时,调用 get() 方法,直接发送两
条 sql 语句,不延迟(一般不使用 false,效率低)
(5)lazy 的值为 extra 时,要什么值就只给什么值,
加强延迟,极其懒惰,效率高
补:
set 标签上的 fetch 和 lazy 属性
many-to-one 标签上的 fetch 和 lazy 属性
总结:
fetch 主要控制抓取关联对象时,发送的 sql 语句的格式
lazy 主要控制查询关联对象时,是否采用延迟加载
fetch 如果设置为 join,lazy 就会失效
【made by siwuxie095】
posted on 2017-08-08 01:12 siwuxie095 阅读(133) 评论(0) 编辑 收藏 举报