当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

hibernate3学习笔记(二) 一级缓存[Java编程]

赞助商链接



  本文“hibernate3学习笔记(二) 一级缓存[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

接上例:http://www.bianceng.cn/Programming/Java/201101/23637.htm

改正BusinessService.java文件以下所示:

1.package com.hb3.pack_01;
2.
3.import org.hibernate.Session;
4.import org.hibernate.SessionFactory;
5.import org.hibernate.cfg.Configuration;
6.
7.import com.hb3.pack_01.model.User;
8.
9.public class BusinessService {
10.
11. public static void main(String[] args) {
12.
13. Configuration config = new Configuration().configure();
14. SessionFactory sessionFactory = config.buildSessionFactory();
15. Session session = sessionFactory.openSession();
16.
17. User user1 = (User) session.load(User.class, new Integer(1));
18. User user2 = (User) session.load(User.class, new Integer(1));
19. System.out.println(user1 == user2);
20.
21. user1 = (User) session.load(User.class, new Integer(1));
22. session.evict(user1);
23. user2 = (User) session.load(User.class, new Integer(1));
24. System.out.println(user1 == user2);
25.
26. user1 = (User) session.load(User.class, new Integer(1));
27. session.clear();
28. user2 = (User) session.load(User.class, new Integer(1));
29. System.out.println(user1 == user2);
30.
31. Session session1 = sessionFactory.openSession();
32. user1 = (User) session1.load(User.class, new Integer(1));
33. session1.close();
34. Session session2 = sessionFactory.openSession();
35. user2 = (User)session2.load(User.class, new Integer(1));
36. session2.close();
37. System.out.println(user1 == user2);
38.
39. session.close();
40. sessionFactory.close();
41. }
42.}

顺次打印出的后果为

true

false

false

false

可见:

利用session.evict大概session.clear把某个物体从缓存中移除,大概直接关闭Session,城市使缓存失效,大概说释放缓存占用的资源空间.

值得一提的是:在载入大量数据时,应当及时手动排除一级缓存以释放资源.

比方:

1.Session session = sessionFactory.openSession();
2.Transaction tx = session.beginTransaction();
3.
4.while(....) { // 大量載入物件時的迴圈表示
5. ....
6. session.save(someObject);
7. if(count % 100 == 0) { // 每100筆資料
8. session.flush(); // 送入資料庫
9. session.clear(); // 排除快取 10. }
11.}
12.
13.tx.commit();
14.session.close();

在SQL Server、Oracle等数据库可以利用hibernate的配置文件举行配置,如:

1.....
2.<hibernate-configuration>
3. <session-factory>
4. ....
5. <property name="hibernate.jdbc.batch_size">100</property>
6. ....
7. </session-factory>
8.<hibernate-configuration>

注意:在MySQL中不支持这种配置方法.


  以上是“hibernate3学习笔记(二) 一级缓存[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 在Hibernate里面动态切换SChema实现访谒差别的数据库的几种办法
  • Hibernate 3新增XML关系长期性介绍
  • Hibernate配置文件在单元测试中的操纵
  • 在Hibernate中动态切换Schema
  • hibernate annoation (八 关联映射)
  • hibernate annoation (九 cascading)
  • <b>hibernate annoation (十 映射查询)</b>
  • hibernate annoation(十一 缓存Ehcache 采纳annoation)
  • Hibernate:操作配置文件生成数据库
  • hibernate annoation (一 加载)
  • hibernate annoation (二 成立表)
  • <b>hibernate annoation (三 id生成器)</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .