比如在custormer和orders类中,2者是1对多双向关联其配置文件分别是custormer.hbm.xml ,orders.hbm.xml
1,
如果在custormer.hbm.xml中的 set中设置lazy=true
这个设置,是不是只针对custormer和orders联合查询进行是不是要延迟加载的?

2,如果custormer.hbm.xml中类级别有lazy=false
session.load(custormer.class,new Long(1)); 这个时候custormer肯定会立即查询,但是,我想问下,与此关联的orders会不会立即查询?
如果要,请问这个时候,lazy应该设置在orders.hbm.xml中的类级别还是设置在custormer.hbm.xml中的set属性中?

解决方案 »

  1.   

    1 set延迟加载.这个说明,查询customer时不会立即查询其关联的orders,如果设为true就会了.如果你想立即查询得到orders可以在session.close()之前调用Hibernate.initialize(customer.getOrders()),这里的customer就是你所查询的,
    2.<class lazy=false> 通常不会这么设.你想立即加载orders最好是在使用上面的方法,而不是在 <set lazy=false> 因为这么设置后,你查所有的customer,它都会关联查询orders
      

  2.   

    糟糕,上面第1条.说反了.<set lazy=false会立即加载.
      

  3.   

    1、
    如果在custormer.hbm.xml中的 set中设置lazy=true 
    这个设置,的确是只针对custormer和orders联合查询时才要延迟加载的。
    2,如果custormer.hbm.xml中类级别有lazy=false 
    session.load(custormer.class,new Long(1)); 
    与此关联的orders是不会立即查询,如需要在set中设置lazy="true",两者是分开的
      

  4.   

    Linux+Oracle+Java 87923477 群,欢迎大家的到来。