【Hibernate学习笔记】Hibernate的检索策略

来源:互联网 发布:淘宝购物券网站 编辑:程序博客网 时间:2024/06/10 00:39

      <1> 立即检索

      <2> 延迟检索

      <3> 迫切左外连接检索

 

  • 类级别的检索策略

       load()方法默认为延迟检索,且lazy可设置为true或false;而get()方法和Query的list()方法会忽略<class>元素的lazy属性,不管lazy属性取什么值,这两个方法总是采用立即检索策略。

  • 关联级别的检索策略

      一对多关联、多对一关联默认为延迟检索;

      一对一关联按照外键映射时,<many-to-one name="address" column="ADDRESS_ID" class="mypack3.Address" cascade="all"unique="true"/>元素中默认的还是延迟检索,<one-to-one name="customer" class="mypack3.Customer"property-ref="address" />元素中默认为迫切左外连接检索。

  • 属性级别的检索策略

      默认为立即检索。属性级别的延迟检索策略适用于二进制大对象、字符串大对象和大容量组件类型的属性。

 

 

    1. lazy属性

    类级别:<class>元素中lazy属性的可选值为:true(延迟检索)和false(立即检索)。

    一对多关联级别:<set>元素中lazy属性的可选值为:true(延迟检索)、extra(增强延迟检索)和false(立即检索)。

    多对一关联级别:<many-to-one>元素中lazy属性的可选值为:proxy(延迟检索)、no-proxy(无代理延迟检索)和false(立即检索)。

 

    2. fetch属性

    类级别:没有此属性。

    一对多关联级别:取值为select(select查询语句)或subselect(带子查询的select语句)时,决定初始化orders集合时的查询语句的形式;如果取值为join(迫切左外连接检索),则决定orders集合别初始化的时机。默认为select。

    多对一关联级别:<many-to-one>元素中fetch属性的可选值为:select(select查询语句)、join(迫切左外连接检索)。默认为select。

  【注】HQL会忽略映射文件设置的迫切左外连接检索策略。


    3. batch-size属性

    设定批量检索的数量,合理的取值在3~10之间。

 

 

0 0
原创粉丝点击