日期:2014-05-20  浏览次数:20722 次

学习Hibernate中遇到关于二级缓存的问题!
Session session1=sf.openSession();
Session session2=sf.openSession(); //在这里创建发2条语句
 
session1.beginTransaction();
UserBean user1=(UserBean) session1.get(UserBean.class,
"E3BB8B149640454AB1974FE87B9A84E1");
session1.getTransaction().commit();
session1.close();

// Session session2=sf.openSession(); //在这里创建发一条语句
session2.beginTransaction();
UserBean user2=(UserBean) session2.get(UserBean.class,
"E3BB8B149640454AB1974FE87B9A84E1");  
session2.getTransaction().commit();
session2.close();
二级缓存配置好,在以上代码中,创建session2的时机不同,向数据库发出的sql语句不同!谁可以解释下为什么?

------解决方案--------------------
两条语句有什么不一样
------解决方案--------------------
估计是一个session在open的时候就绑定了一个缓存区,所以前面直接打开两个session时,有可能其缓冲区都是空(或者都一样),如果在后面打开
Session session2=sf.openSession(); //在这里创建发2条语句

可能这里就用上了经session1更新过的缓存。