为什么Hibernate会话不反映在应用程序外部完成的更改

时间:2015-04-18 12:55:51

标签: java mysql hibernate

我正在开发一个Java应用程序,它会快速检查客户端数据库表中的更新,如果发现任何更新,则使用HibernateMySQL将其传输到服务器数据库。

  1. 当我使用hibernate会话 BUT 更改数据库时,只要我使用MySQL Workbench更改数据库表值,它就会正常工作,然后它将返回与以前一样的记录。
  2. 如何在表中的外部更改中更新hibernate会话。

    public List<com.ctpl.models.client.MasterTable> getAllClientMasterTableWithServerFlag() {
        try {
            clientSession = ClientHibernateUtil.getSessionFactory().openSession();
            clientSession.flush();
    
            Criteria criteria = clientSession.createCriteria(com.ctpl.models.client.MasterTable.class);
            criteria.add(Restrictions.eq("serverFlag", 0));
    
            List<com.ctpl.models.client.MasterTable> clientMasterTables = criteria.list();
            clientSession.close();
            return clientMasterTables;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    

    我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

查看Session.clear()或逐出方法

参考这篇文章:

http://howtodoinjava.com/2013/07/01/understanding-hibernate-first-level-cache-with-example/

希望有所帮助

答案 1 :(得分:1)

我们只需要在hibernate中添加连接池,如下所示......

  1. C3P0 (Easy to implement)
  2. BonCP
  3. Tomcat JDBC Connection Pool
  4. DBPool
  5. HikariCP
  6. Proxool
  7. 找到使用this example

    轻松实现它的最佳方式