hibernate 检索策略

来源:互联网 发布:南方大数据110指数基金 编辑:程序博客网 时间:2024/05/17 08:23

本文主要是学习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
原创粉丝点击