Java Hibernate EntityManager同步

时间:2016-03-03 17:08:04

标签: java mysql hibernate persistence jta

我遇到了数据库字段同步问题。

我有一个Singleton类,例如EntityManager,我使用这样的代码:

Persistence.createEntityManagerFactory("Myproject_EJB")

我使用WebApplication和WebService层中的单例创建EntityManager,并使用它来访问持久性。

用户可以使用WebApplication修改此数据库字段,但只有在请求完成时数据才会存储在数据库中(请求可能需要几秒钟)。同时,如果有人调用WebService并询问相同的字段,我的状态会不一致。

在persistence.xml中,我有use_second_level_cache和use_query_cache设置为true,以及transaction-type =“JTA”。

在webApp中,我使用这样的代码来更新数据:

EntityManager em = EntityMan.getEMF().createEntityManager();       
    try {
        em.find(Tel.class, tel.getTelId());
        em.merge(tel);
        em.flush();
    } catch (Exception e) {
        logger.debug(e.getMessage());
        e.printStackTrace();
    }

我该如何解决?

1 个答案:

答案 0 :(得分:0)

不要对经常更改的数据使用缓存,或者将缓存时间保持在非常小的范围内?您可以设置表级缓存 http://www.tutorialspoint.com/hibernate/hibernate_caching.htm 只是指点看起来不是一个完美的答案。