hibernate笔记(四)--lazy,inverse

来源:互联网 发布:mac硬盘全抹除 编辑:程序博客网 时间:2024/06/16 11:20

1、在Hibernate3.0版本之前,懒加载默认是为false,在3.0版本之后lazy默认为true,当用到的时候需要显示的去调用
2、hibernate lazy策略可以使用在:
   * <class>标签上,可以取值:true/false
   * <property>标签上,可以取值:true/false 使用相对较少,不做要求
   * <set><list>标签上,可以取值:true/false/extra
   * <one-to-one><many-to-one>单端关联上,可以取值:false/proxy/noproxy
 
3、lazy概念:只有真正使用该对象内普通属性时,才会创建,对于hibernate而言,正真使用的时候才会发出sql
      load支持lazy(懒加载),get不支持懒加载

4、hibernate支持lazy策略只有在session打开状态下有效(面试试题)

5、<class>标签上的lazy特性只对普通属性起作用


lazy – 延迟加载(懒加载),一般用于集合的抓取策略,也就是说只在需要用到的情况下,再发出select语句,将其相关的对象查询出来
set默认lazy属性的值是true,即hibernate会自动使用懒加载策略,以提高性能
举例说明
 <set name="students“ lazy=“false”>
         <key column=“teacher_id" ></key>
         <one-to-many class=" com.ambow.entity.Student " />
 </set>

inverse – 标记由哪一方来维护关联关系(双向关联中会用到)
inverse默认值为false
如果inverse设置为true,表示将由对方维护两者之间的关联关系
举例说明
 <set name="students“ lazy=“false” inverse=“true”>
         <key column=“teacher_id" ></key>
         <one-to-many class=" com.ambow.entity.Student " />
 </set>

原创粉丝点击