lazy(懒加载)即只有真正使用该对象时,才会创建。而在Hibernate中指真正使用时才会发出sql语句(注意:Hibernate发出的sql语句在没有提交事务前存在session对象的一个属性中)
在Hibernate中的lazy策略:
(1)在实体的配置文件中的<class>标签上的lazy特性只对普通属性起作用,对其关联对象不起作用。lazy属性的取值true(默认),false。
<class name="Dept" table="t_dept" lazy="true">
<!--
<class name="Dept" table="t_dept" lazy="false">
-->
(2)Hibernate在集合上的lazy策略,可以取值: true、 false、 extra(可以根需要加载所需要的,不会全部都加载) 注:默认值为:true
在实际开发中多会设置lazy=extra,lazy=extra与lazy=true的效果相同,但是lazy=extra会根据实际情况发出相对智能的SQL语句,所以在效率上会比较好。
(3)Hibernate在单端关联<one-to-one>、<many-to-one>上的lazy策略,可以取值: false ,proxy ,noproxy(自己定义加载方式比较发在) 默认值为: proxy(即:采用延时加载)
注意:<class>标签上的lazy不会影响到单端关联上的lazy特性