Hibernate

提供了以下几种抓取策略:

连接抓取(Join fetching) Hibernate通过在SELECT语句中使用OUTER JOIN来获得对象的关联实体或集合
是通过一条连接查询来取得关联属性(外键的name之类的),一条SQL语句left join,如果是延迟加载而且没有实际访问的话,也是不会查询的
查询抓取(Select fetching) 另外发送一条SELECT语句抓取当前对象的关联实体或集合。除非指定了lazy=“false”禁止延迟抓取,否则只有当真正访问关联关系的时候,才会执行第二条SELECT语句
这种事会查2次的,第一次查实体对象,第二次查关联对象(受到是否延迟加载的影响)
子查询抓取(Subselect fetching) 另外发送一条SELECT语句抓取在前面查询到的所有实体对象的关联集合。除非指定了lazy=“false”禁止延迟抓取,否则只有当真正访问关联关系的时候,才会执行第二条SELECT语句
批量抓取(Batch fetching) 对查询抓取的优化方案,通过指定一个主键或外键列表,Hibernate使用单条SELECT语句获取一批对象实体或集合
一般用在集合属性和关联主表配置上面,通过in查询来一次查出多条(batch-size)数据,比如从表实体类中引用主表集合(10个主键),batch-size=3,一共有要查询4次

posted @ 2013-08-13 22:36  hhhyde  阅读(203)  评论(0编辑  收藏  举报