***.hbm.xml文件中的一些属性

本文详细介绍了Hibernate中懒加载(lazy)与急加载(fetch)的配置方式及其对性能的影响。解释了不同场景下如何选择合适的加载策略,包括对一对多和多对多关系的处理。

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

在person.hbm.xml文件中
class的属性
lazy="true"(默认):延迟检索
lazy="flase":立即检索 ,只对load()方法有效

set的属性
lazy:决定orders集合被初始化的时机
fetch:select ,subselect,join(lazy将被忽略)
batch-size:批量检索减少select语句的数目,提高延迟检索或立即检索的运行性能

set的lazy属性:
1.1-n或n-n的集合属性默认使用懒加载检索策略。
2.可以通过设置set的lazy属性来修改默认的检索策略。默认为true,并不建议设置为false。
3.lazy还可以设置为extra。增强的延迟检索。该取值会尽可能的延迟集合初始化的时机。

set元素的batch-size属性:
设定一次初始化set集合的数量。

fetch:确定初始化orders集合的方式
1.默认值为select。通过正常的方式来初始化set元素
2.可以取值为subselect。通过子查询的方式来初始化所有的set集合,
子查询作为where子句的in的条件出现,子查询查询所有1的一端的ID。
此时lazy有效,但batch-size失效。
3.若取值为join。则
3.1在加载1的一端的对象时,使用迫切左外连接(使用左外连接进行查询,且把集合属性进行初始化)的方式检索n的一端的集合属性。
3.2忽略lazy属性
3.3HQL查询忽略fetch=join的取值

一对多和多对多检索:
1.lazy取值为proxy和false分别代表对应的属性采用延迟检索和立即检索。
2.fetch取值为join,表示使用迫切左外连接的方式初始化n关联的1的一端的属性
忽略lazy属性。
3.batch-size,该属性需要设置在1那一段的class元素中:
<class name="Customer" table="CUSTOMERS" lazy="true" batch-size="5">
作用:一次初始化1的一端代理对象的个数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值