【问题标题】:How an OpenJPA Entity class can always be in sync with dbOpenJPA 实体类如何始终与 db 同步
【发布时间】:2012-12-29 00:26:43
【问题描述】:

在使用 OpenJPA 时,如果我使用注释 @Entity 标记类,是否有办法指定(通过注释)始终保持该实体与底层数据库同步。

目标是始终访问最新修改的数据。我知道在实体类之外,我们可以执行EntityManager.refresh,这将刷新对象以从数据库加载最新数据。但是有没有办法在创建实体本身时指定它。这样未来的开发人员可以只看实体类就知道它总是有最新的数据。他不需要扫描整个代码库来查看 EntityManager.refresh 的调用位置。

【问题讨论】:

  • 我已经重新标记了你的问题,所以它可能会得到更多的关注。

标签: java jpa synchronization openjpa entitymanager


【解决方案1】:

我认为您正在处理的问题是同一实体的并发修改。 JPA 不是为处理这个问题而设计的。在 JPA 应用程序中处理并发访问的更合适的形式是锁定。

您也没有提到事务隔离。您所说的行为在很大程度上取决于数据的可访问性,这些数据在事务开始后被修改。这在所有事务隔离级别中都是不可能的。

您应该将您的要求更多地与系统时钟之类的东西进行比较。在调用方法now 时,您总是希望访问最新日期。因此,您应该有一个可以返回该对象的服务。您还应该通过该服务为该对象编写更新。因此,该服务可以完全控制当前最新的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-26
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    相关资源
    最近更新 更多