在单独的JVM上运行的Hibernate无法读取

时间:2013-12-31 03:33:44

标签: web-services hibernate junit jvm

我正在用Hibernate实现WebService来将数据写入/读入数据库(MySQL)。我遇到的一个大问题是当我通过一个JVM(例如:JUNit测试或直接从DBUI套件)成功插入数据(例如,USER表)时,我在单独的JVM上运行的WebService的Hibernate无法找到这个新数据。它们都指向同一个DB服务器。只有当我销毁了WebService的Hibernate SessionFactory并重新创建它时,WebService的Hibernate层才能读取新插入的数据。相反,相同的JUnit测试或来自DBUI套件的直接查询可以找到插入的数据。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

此问题今天解决了以下问题:

  1. 我将Hibernate配置文件(hibernate.cfg.xml)更改为隔离级别至少为“2”(READ COMMITTED)。这立即解决了上述问题。要进一步了解此隔离级别设置,请参阅以下内容:

  2. 我通过为每个Session对象设置CacheMode为IGNORE来确保我没有使用二级缓存:

    Session session = getSessionFactory().openSession();
    session.setCacheMode(CacheMode.IGNORE);
    
  3. 仅供参考:有些人在hibernate.cfg.xml中执行以下操作以禁用其应用程序中的第二级缓存(但我不需要):

    <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
    <property name="hibernate.cache.use_second_level_cache">false</property>
    <property name="hibernate.cache.use_query_cache">false</property>