hibernate 检索策略

本文主要是学习hibernate的检索策略

1、类级别的检索策略有两种一种是立即检索,一种是延迟检索,仅影响load操作

立即检索,是类的默认检索方式,或者设置了lazy=“false”也是立即检索方式,即执行load操作之后会立马返回相应的数据。

延迟检索,当类设置lazy=“true”时,hibernate在执行load操作时不会立马执行sql,即使时getId也不会执行,只有当获取非key属性时才会执行sql


2、检索策略

1)立即检索,是默认的检索方式,即检索Customer时会默认将Orders检索出来。

2)延迟检索,设置lazy属性为“true”,检索Customer时不会将Orders检索出来,只是返回Orders的集合代理类,只有当用到了Orders时才会检索Orders对象

3)fetch策略,hibernate3已经使用fetch取代了outer-join的作用,一般的默认情况下fetch=“select”,这样当获取Customer时,就会有N+1问题,当我们设置fetch=“join”时,则可以避免N+1问题。

4)set元素中batch-size=“3”的作用解释,当Customer一对多关联Orders时,获取Orders将会发出sql语句,默认情况下有多少Customer将有多少获取Orders的sql语句,若设置了此属性,则表示每三个customer执行一个sql语句,即selete orders where cid in (?,?,?)。

5)当设置fetch为join时,我们需要设置hibernate的属性max_fetch_depth来控制外连接关联的层次,如设置depth=1时,Order会使用join关联Customer,但是Customer不会再使用join来关联Orders,只会单独使用select获取Orders。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值