Hibernate与数据库不同步

时间:2017-01-11 16:09:40

标签: java hibernate

我正在为我的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();
    }

据我所知,没有办法关闭缓存(除非使用无状态会话)。

有没有人知道我应该修改什么来保持用户的数据同步?

1 个答案:

答案 0 :(得分:0)

尽量避免将对象驱逐出会话 文档(http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/Session.html#evict(java.lang.Object)

表示这会阻止同步数据库中的更改。

你真的应该使用过滤器并避免在应用程序代码中管理会话