0

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

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

4

1 回答 1

0

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

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

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

于 2013-02-06T08:01:55.723 回答