【问题标题】:Java Hibernate EntityManager syncJava Hibernate EntityManager 同步
【发布时间】:2016-03-03 17:08:04
【问题描述】:

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

我有一个单例类,例如 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();
    }

请问我该如何解决??

【问题讨论】:

    标签: java mysql hibernate persistence jta


    【解决方案1】:

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

    【讨论】:

    • 我不认为是缓存问题,我看到只有在请求 web 终止后才会更新数据库中的数据。我知道休眠使用每个请求的会话,也许这是我的条件,但我怎样才能改变这种行为?我如何才能仅针对此功能进行更改,而不是针对所有应用程序?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 2016-12-23
    相关资源
    最近更新 更多