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只能往内存中放数据,不能从内存中取数据,必须强制访问数据库

 

posted @ 2016-08-16 10:03  回青  阅读(360)  评论(0编辑  收藏  举报