hibernate3学习笔记(二)|一级缓存
来源:互联网 发布:爱家网源码 编辑:程序博客网 时间:2024/06/06 01:22
接上例:http://blog.csdn.net/kunshan_shenbin/archive/2008/09/02/2864883.aspx
修改BusinessService.java文件如下所示:
- package com.hb3.pack_01;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- import com.hb3.pack_01.model.User;
- public class BusinessService {
- public static void main(String[] args) {
- Configuration config = new Configuration().configure();
- SessionFactory sessionFactory = config.buildSessionFactory();
- Session session = sessionFactory.openSession();
- User user1 = (User) session.load(User.class, new Integer(1));
- User user2 = (User) session.load(User.class, new Integer(1));
- System.out.println(user1 == user2);
- user1 = (User) session.load(User.class, new Integer(1));
- session.evict(user1);
- user2 = (User) session.load(User.class, new Integer(1));
- System.out.println(user1 == user2);
- user1 = (User) session.load(User.class, new Integer(1));
- session.clear();
- user2 = (User) session.load(User.class, new Integer(1));
- System.out.println(user1 == user2);
- Session session1 = sessionFactory.openSession();
- user1 = (User) session1.load(User.class, new Integer(1));
- session1.close();
- Session session2 = sessionFactory.openSession();
- user2 = (User)session2.load(User.class, new Integer(1));
- session2.close();
- System.out.println(user1 == user2);
- session.close();
- sessionFactory.close();
- }
- }
依次打印出的结果为
true
false
false
false
可见:
使用session.evict或者session.clear把某个物体从缓存中移除,或者直接关闭Session,都会使缓存失效,或者说释放缓存占用的资源空间。
值得一提的是:在载入大量数据时,应该及时手动清除一级缓存以释放资源。
例如:
- Session session = sessionFactory.openSession();
- Transaction tx = session.beginTransaction();
- while(....) { // 大量載入物件時的迴圈示意
- ....
- session.save(someObject);
- if(count % 100 == 0) { // 每100筆資料
- session.flush(); // 送入資料庫
- session.clear(); // 清除快取
- }
- }
- tx.commit();
- session.close();
在SQL Server、Oracle等数据库可使用hibernate的配置文件进行配置,如:
- ....
- <hibernate-configuration>
- <session-factory>
- ....
- <property name="hibernate.jdbc.batch_size">100</property>
- ....
- </session-factory>
- <hibernate-configuration>
注意:在MySQL中不支持这种配置方式。
- hibernate3学习笔记(二)|一级缓存
- hibernate3学习笔记(二)|一级缓存
- hibernate3学习笔记(二十二)|Query缓存机制
- hibernate3学习笔记(二十二)|Query缓存机制
- Mybatis学习笔记-一级缓存
- Hibernate3中Session缓存即一级缓存
- hibernate学习笔记(session一级缓存)
- Mybatis学习笔记-一级缓存与二级缓存
- hibernate学习笔记03----一级缓存
- Hibernate3学习笔记(8)——hibernate3缓存管理
- Hibernate3一级缓存和二级缓存的理解!
- Hibernate3一级缓存和二级缓存的理解!
- mybatis学习笔记(14)-查询缓存之一级缓存
- mybatis学习笔记(13)-查询缓存之一级缓存
- Hibernate学习笔记之session缓存(一级缓存)
- Mybatis学习笔记(十五)【查询缓存之一级缓存】
- hibernate3学习笔记(二十一)|二级缓存
- hibernate3学习笔记(二十三)|进阶特性
- xSocket 通讯框架 demo
- 如何设置客户端每次发送请求的时候,保证都是新建一个http连接,而不是和上次的连接用同一个?
- 关于Spring控制反转的“强暴”解释
- 笔记:Linux SSH 中文乱码解决方法
- 中国人不可不知道的知识(经典,收藏)
- hibernate3学习笔记(二)|一级缓存
- 字符串和流
- asp.net 创建Windows服务
- 异步FIFO在系统中的使用
- IDispose实现非托管资源清理
- java math API 解释
- 适应IE8
- AJAX连续提交相同URL注意事项
- 留作纪念的Nike Human Race 10K