[Seasar-user:10089] [S2Dao] 行ロック(FOR UPDATE)について

PPOI [E-MAIL ADDRESS DELETED]
2007年 8月 23日 (木) 22:33:00 JST


 PPOIです。
 S2Dao について質問です。

 エンティティの更新処理を含む処理の場合,更新前に対象行を FOR UPDATE を
つけて SELECT することで行ロックを設定するというのが一般的だと思うのです
が,これを S2Dao で実現する場合,どのように実装するのが一般的なのでしょ
うか?

 とりあえず現状で私が思いつくのは以下の3パターンです。

1. FOR UPDATE で SELECT する SQL ファイルを用意する。
2. Query アノテーションで FOR UPDATE を記述する。
3. DBFlute を使用する。

 1は,検索条件そのものは通常の SELECT と変わらないにも関わらず自動生成
される SQL と同じような SQL を手動で記述しなければならないので,あまり気
持ちが良くありません。
 2についても,アノテーションで指定する追加 SQL が ORDER BY で始まらない
場合は WHERE 句が自動生成されないため,ORDER BY 句または WHERE 句を自分
で記述した上で FOR UPDATE を記述する必要があり,やはり気持ちが良くありま
せん。
 3は過去に案件で使用したことがあるのですが,現状,DBFlute は複数DBに対
応するアプリケーションを開発するのが難しいため,出来れば利用を避けたいと
思っています。

 とりあえず今は2のパターンで逃げてみたのですが,もっと良い方法があれば
是非アドバイスを頂きたく,よろしくお願いいたします。


 なお,現在利用している環境は以下の通りです。

JDK 1.5.0_12
S2Container.Java 2.4.17
Teeda 1.0.10
S2Dao 1.0.46
PostgreSQL 8.2.4

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 PPOI
  E-mail: [E-MAIL ADDRESS DELETED]
 Key fingerprint: 6F7E 2FED 72A7 C84C 9E5A  2EAC 6850 E1DF 0921 CAFB
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=




Seasar-user メーリングリストの案内