【Hibernate】抓取策略
一、区分延迟和立即检索
- 立即检索:
- 当执行某行代码的时候,马上发出SQL语句进行查询.
- get()
- 延迟检索:
- 当执行某行代码的时候,不会马上发出SQL语句进行查询.当真正使用这个对象的时候才会发送SQL语句.
- load();
二、类级别检索和关联级别检索
- 类级别的检索:
- <class>标签上配置lazy
关联级别的检索:
/ 上面的lazy.
查询某个对象的时候,是否需要查询关联对象?
查询关联对象的时候是否采用延迟检索?
从一的一方关联多的一方:
fetch:控制sql语句的类型
- join : 发送迫切左外连接的SQL查询关联对象.fetch=”join”那么lazy被忽略了.
- select : 默认值,发送多条SQL查询关联对象.
- subselect : 发送子查询查询关联对象.(需要使用Query接口测试)
lazy:控制关联对象的检索是否采用延迟.
- true : 默认值, 查询关联对象的时候使用延迟检索
- false : 查询关联对象的时候不使用延迟检索.
- extra : 及其懒惰.
如果fetch是join的情况,lazy属性将会忽略.
在多的一方关联一的一方:
- fetch:控制SQL语句发送格式
- join : 发送一个迫切左外连接查询关联对象.fetch=”join”,lay属性会被忽略.
- select : 发送多条SQL检索关联对象.
- lazy:关联对象检索的时候,是否采用延迟
- false : 不延迟
- proxy : 使用代理.检索订单额时候,是否马上检索客户 由Customer对象的映射文件中
上lazy属性来决定. - no-proxy : 不使用代理
************ **供自己学习查阅使用(我只想静静的写篇博客,自我总结下[手动狗头]) by Pavel** *********