Hibernate检索策略

来源:互联网 发布:linux查看指定进程 编辑:程序博客网 时间:2024/06/14 22:05

-------------------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 标签上配置两个属性

  

1fetch 属性:默认为 select

  

2lazy 属性: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】

原创粉丝点击