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

本文深入探讨了ORM中不同级别的检索策略,包括类级别、关联级别和属性级别的检索方式及其配置选项,如lazy、fetch和batch-size等属性的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      <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之间。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值