我正在为我的web项目使用hibernate(3.5.6-Final)。问题是,当我与其中一个用户更改数据时,我无法看到其他用户的更改。我猜第二个仍然可以从缓存中运行。我使用此方法获取数据(Newsletter类是我的Entity类):
public static List<Newsletter> getNewsletters() {
List<Newsletter> newsletter = new ArrayList<Newsletter>();
Session session = null;
try {
session = HibernateConfiguration.getSession();
session.clear();
Criteria criteria = session.createCriteria(Newsletter.class);
newsletter = criteria.list();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
return newsletter;
}
我正在使用以下方法保存数据:
public static void save(Object o) throws Exception{
Session session = HibernateConfiguration.getSession();
Transaction transaction = session.beginTransaction();
session.saveOrUpdate(o);
transaction.commit();
session.evict(o);
session.close();
}
据我所知,没有办法关闭缓存(除非使用无状态会话)。
有没有人知道我应该修改什么来保持用户的数据同步?
答案 0 :(得分:0)
尽量避免将对象驱逐出会话 文档(http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/Session.html#evict(java.lang.Object))
表示这会阻止同步数据库中的更改。
你真的应该使用过滤器并避免在应用程序代码中管理会话