Hibernate中的延迟加载及fetch
Hibernate中的延迟加载
1.类级别的查询策略:
lazy : true(默认值)
false(立即加载)
2.多对一关联的查询策略:
lazy: proxy(默认值)
no-proxy
false
3.一对多 或多对多
lazy:true(默认值)
false
extra
fetch:影响Hibernate针对底层SQL的生成
一、emp的映射文件的类级别设置非延迟加载
第二条会报空指针异常
二、emp的映射文件的类级别设置非延迟加载,其多对一属性也设置为非延迟加载
测试代码
三、emp的映射文件的类级别设置非延迟加载,多对一节点设置延迟加载和fetch=“join”
结论1:当fetch和lazy连用的时候,设置fetch=“join”,lazy的属性会失去作用,即不再保证非延迟加载,而是即时加载
四、当使用query接口的list()方法时,fetch=“join” lazy属性会重新生效
结论:使用query接口的list()方法,fetch=“join”,lazy的属性重新生效,这也是由list本身的机制决定的,list只能往内存中放数据,不能从内存中取数据,必须强制访问数据库