私はJPAが初めてです。そして、この注釈にたどり着き@Version
ました。この注釈のドキュメントには、次のように書かれています。
「この注釈は、楽観的ロック値として機能するエンティティ クラスのバージョン フィールドまたはプロパティを指定します。バージョンは、マージ操作を実行するときの整合性を確保し、楽観的同時実行制御のために使用されます。」
楽観的ロックとは何を意味し、実際にこの注釈とどのように関連していますか? ありがとう
私はJPAが初めてです。そして、この注釈にたどり着き@Version
ました。この注釈のドキュメントには、次のように書かれています。
「この注釈は、楽観的ロック値として機能するエンティティ クラスのバージョン フィールドまたはプロパティを指定します。バージョンは、マージ操作を実行するときの整合性を確保し、楽観的同時実行制御のために使用されます。」
楽観的ロックとは何を意味し、実際にこの注釈とどのように関連していますか? ありがとう
簡単に言えば...
として注釈が付けられたフィールドを持つエンティティの各レコードは、@Version
SVN のようなバージョンでタグ付けされます。エンティティがトランザクションのコミット (およびフラッシュ) によって更新されるたびに、チェックにより、現在のエンティティのバージョンとデータベースのエントリが一致することが保証されます。このチェックに失敗するとOptimisticLockException
、現在の操作よりも前に誰かがそのレジストリの変更をコミットしたため、エラーが発生します。
楽観主義はの概念に基づいています
「このエントリをロックする必要はありません。誰も触れません」
一方、悲観的ロックは、特定のエントリに対する特定の操作 (READ や WRITE など) を実際にロックします。
「作業中に誰かがこのエンティティを更新しようとします」