私はEntityManager.lock(entity、LockModeType.READ)を呼び出すことの効果を理解しようとしています。 APIのドキュメントは私にとって非常に混乱しています。JPA:読み取りロックはどのように機能しますか?
私は同時スレッドとスレッド1呼び出しロック(エンティティ、LockModeType.READ)が必要な場合、スレッド2はまだエンティティを読み書きできますか?
は、私がこれまでに学んだこと:JPA1にREAD
ロックタイプはJPA2でOPTIMISTICと同じです。このようなロックが設定されている場合、EntityManagerはトランザクションをコミットする前にバージョン属性をチェックしますが、更新はしません。 OPTIMISTICロックモードの説明が見つかりました:Link。 OPTIMISTIC(READ)LockModeの例を検索します。 私がこれを理解している限り、スレッド1で読み取りロックを設定してもスレッド2 ... nには影響しません。他のすべてのスレッドは、依然としてエンティティを読み書きできます。しかし、スレッド1のトランザクションがコミットされ、他のスレッドがエンティティを更新すると、スレッド1のトランザクションはロールバックされます。
私はこれを正しく理解していますか?
まだ分かりません。誰かが文章を再構成したり、例を追加することはできますか? – stoefln
私の回答が更新されました私が提供したリンクを確認してください – engma