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