JPA concurrency に関するこの記事を読みましたが、厚すぎるか、十分に明示的ではありません。
データベース制御のアトミック update-if-found-else-insert 操作 (an UPSERT
) を実行しようとしています。
私の貧弱な頭脳には、もちろんトランザクション内で、 のロックモードで名前付きクエリを実行し、結果PESSIMISTIC_WRITE
が返されるかどうかを確認してから、persist()
またはその後のいずれかを実行できるように見えますupdate()
。
私がはっきりしていないのは、この操作をPESSIMISTIC_WRITE
ロックとロックで行うことの違いPESSIMISTIC_READ
です。私は文を読みました--それPESSIMISTIC_READ
は反復不可能な読み取りを防ぐことを意図していることを理解しています、そしてPESSIMISTIC_WRITE
...まあ、多分私はそれをあまりよく理解していません:-) --しかし、その下には単なる SQLSELECT FOR UPDATE
です、ええ? 両方の場合において?