私はJPAに比較的慣れておらず、エンティティを楽観的にロックおよび更新する方法について非常に混乱しています。プロジェクトでこれを一貫して処理するための一連の汎用メソッドが必要です。
エンティティの状態がわからないメソッド内からロック/リフレッシュ メソッドを呼び出している可能性があります。デタッチされた、または新しい/保存されていないエンティティ オブジェクトと、データベースから以前に読み取られたエンティティ オブジェクトが渡された可能性があります。簡単にするために、ユーティリティ メソッドですべての不測の事態を処理したいと考えています。意味的に私が実装しようとしているメソッドは次のとおりです。
MyEntity refreshAndLock(MyEntity e)
データベースからエンティティを再度読み取り、オプティミスティックにロックするか、まだデータベースに保存されていないエンティティに対して何もしません。分離されたエンティティも再読み取りおよびロックされ、管理されたバージョンが返されます。
MyEntity refresh(MyEntity e)
エンティティを再度読み取るか、データベースにまだ保存されていないエンティティに対しては何もしません。切り離されたエンティティも再読み込みされます。
MyEntity lockAndNotRefresh(MyEntity e)
メモリ内のエンティティのバージョンをロックします (既に古くなっている可能性があります)
ヒントやリンクはありがたく受け入れます。これについては明確なガイダンスを見つけることができませんでしたが、これは一般的な要件のように思われるため、驚いています。