我对 JPA 比较陌生,并且对如何最好地乐观地锁定和刷新实体感到非常困惑。我想要一套通用的方法来在我的项目中始终如一地处理这个问题。
我可能从一个不知道实体状态的方法中调用锁定/刷新方法,它可能已经传递了一个分离的或新的/未保存的实体对象以及一个先前从数据库中读取的实体对象。为简单起见,我希望我的实用程序方法能够处理所有可能发生的情况。从语义上讲,我尝试实现的方法是:
MyEntity refreshAndLock(MyEntity e)
从数据库中重新读取实体并乐观地锁定它,或者对尚未保存到数据库的实体不做任何事情。分离的实体也将被重新读取和锁定,并返回一个托管版本。
MyEntity refresh(MyEntity e)
只需重新读取实体,或对尚未保存到数据库的实体执行任何操作。分离的实体也将被重新读取。
MyEntity lockAndNotRefresh(MyEntity e)
锁定内存中实体的版本(可能已经过期)
任何提示或链接都非常感激地接受。我还没有找到明确的指导,这让我很惊讶,因为这似乎是一个常见的要求。