随笔 - 6  文章 - 129  trackbacks - 0
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(14)

随笔档案(6)

文章分类(467)

文章档案(423)

相册

收藏夹(18)

JAVA

搜索

  •  

积分与排名

  • 积分 - 822216
  • 排名 - 49

最新评论

阅读排行榜

评论排行榜

Hibernate可以充分有效的使用批量抓取(批量立即加载批量延迟加载),也就是说,如果仅一个访问代理(或集合),那么Hibernate将不载入其他未实例化的代理。 批量抓取是延迟查询抓取的优化方案,你可以在两种批量抓取方案之间进行选择:在类级别和集合级别。

一对多、多对多(末端为多)的情况:在集合的配置中设置,以 set 为例,如下所示: 

        <set name="students" inverse="true" cascade="all" lazy="false" batch-size="2" ><!-- 一对多的延迟加载设置 -->
            <key>
                <column name="TEAMID" length="32" not-null="true" />
            </key>
            <one-to-many class="edu.dgut.ke.model.Student" />
        </set>

 一对一、多对一(末端为一)的情况:如果要对末端为一的关联设置批量加载,要在“一”这端的配置文件中进行设置,比如学生对身份证,要实现对班级的批量加载,应设置如下
                <class name="edu.dgut.ke.model.Certificate" table="CERTIFICATE" lazy="true" batch-size="10" >

测试例子

Session session = HibernateSessionFactory.getSession();
  List list = session.createQuery("from Student").list();
  HibernateSessionFactory.closeSession();
(Student对Certificate是采用立即加载策略)
控制台输出

Hibernate: select student0_.ID as ID0_, student0_.cardId as cardId0_, student0_.TEAMID as TEAMID0_, student0_.STUDENTNAME as STUDENTN4_0_ from STUDENT student0_
Hibernate: select certificat0_.ID as ID1_0_, certificat0_.`DESCRIBE` as DESCRIBE2_1_0_ from CERTIFICATE certificat0_ where certificat0_.ID in (?, ?, ?, ?, ?, ?)


posted on 2007-11-06 16:19 Ke 阅读(345) 评论(0)  编辑  收藏 所属分类: hibernate

只有注册用户登录后才能发表评论。


网站导航: