- PR -

サーブレット+JSP処理のロック

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/01/26
投稿数: 27
投稿日時: 2005-07-12 16:55
現在、jsp+サーブレット+bean でデータベースを表示、編集、更新するプログラムを作成しています。

その中で、DBのロックについてお聞きしたいことがあります。

処理の基本的な流れとしては、

DB表示サーブレット

DB表示JSP

編集したいレコードのキー情報をFORMで送信

DB編集サーブレットでキー情報からレコードを検索

DB編集JSPで編集画面表示

データ編集、決定、編集内容をFORMですべて送信

DB更新サーブレットでFORMから受け取った内容をDBに更新。

このなかで編集から更新までをロックしたいと思うのですが
なにか良い方法はありますでしょうか?

初歩的な質問かもしれませんがよろしくお願いいたします。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-07-12 17:21
「悲観的ロック」「楽観的ロック」で検索してみると、いろいろ情報が得られますよ。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-07-12 19:17
テーブルに編集可能フラグを付けるとか・・・
編集内容を取得する時に、
・編集可能フラグが「可能」なら「不可能」に更新してから取得
・編集可能フラグが「不可能」ならエラー
ってな具合でできませんかね。

WEBアプリで実装する場合、ステートレスなので
例えば編集中のままログアウト処理をしないでブラウザを落としたら・・・等
考えなければいけない点が沢山あります。

トランザクションを有効にしたコネクションをセッションに格納して、
コネクションかセッションがタイムアウトするか、
編集が完了するまでコミットしないって方法も・・・

悲観的ロックにこだわり過ぎて、上記のような複雑な実装に依存するよりも
楽観的ロックでも問題のない設計を行うほうがいいと思いますが。
未記入
常連さん
会議室デビュー日: 2004/01/26
投稿数: 27
投稿日時: 2005-07-13 14:16
なるほど途中で閉じた場合などの考慮も必要になってくるんですね・・
楽観的ロックで一度詳しく調べてみます。

ご返答ありがとうございました。感謝です。m(__)m
ぬべたそ
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 72
投稿日時: 2005-07-13 14:53
EJBデザインパターンの「version number」も参考になると思います。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-07-13 15:20
悲観的ロックと楽観的ロックのどちらがいいかは要件次第です。

さんざん時間をかけて入力したものがエラーになるという事態がちょくちょく起こるような
アプリケーションじゃ使えないですよね。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-07-13 21:30
ukさんの仰るとおり、要件次第で正解なんてないというか、
顧客の満足が得られればそれが正解ですよね。

ちなみに、テーブルに対してフラグを付けるという案を出しましたが、
さらに有効期限も設けて、その有効期限内であるかを判定すれば、
所有権を握ったままログアウトしないで終了した場合などには対処可能だと思います。

この辺も結局は要件次第ですね。
1

スキルアップ/キャリアアップ(JOB@IT)