JPAのWrite LockとPofEAAの粗粒度ロック
開発の現場 Vol.004 効率UP&スキルUP エンジニアのための実践ソフトウェア技術誌
- 作者: SE編集部
- 出版社/メーカー: 翔泳社
- 発売日: 2006/04/13
- メディア: 大型本
- クリック: 3回
- この商品を含むブログ (17件) を見る
PofEAA早分かりガイドがいいです!とても参考になります。
PofEAAちゃんと読まないとなぁと思いつつ放置していたのですが、興味が湧いてきました。
ところで、これを読んで、今仕事で必要になっているのはどうやら「粗粒度ロック」なんだと気づきました。で、この「粗粒度ロック」ですが、JPAのWrite Lockも「粗粒度ロック」の1つなのかなぁと思いました。「関連するオブジェクト群をまとめてロックする」という意味では同じだといえるような気がします。
http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?cmd=view&p=CoarseGrainedLock
JPAのWrite Lockはつい先日 Pro EJB 3: Java Persistence API のCHAPTER 9 を読んで知ったんですが、その挙動は僕にとっては新鮮というか結構おどろきでした。楽観的排他制御のために、一見更新する必要がない行のバージョン列だけを更新するなんて!
2つのエンティティにone-to-manyの関係があるとき、このリレーションシップやmany側の値を変更するトランザクションたびにone側のバージョン列を更新することで2つのエンティティをまとめて(楽観的に)ロックするのがWrite Lockだと理解しています。many側のエンティティはone側のエンティティのバージョン値に常に依存するってことだと思います。これってPofEAAの「ルート軽(楽観的?)オフラインロック」の例に近いような気がしました。