[Seasar-user:16528] Re: [S2JDBC] 排他制御について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 12月 17日 (水) 15:00:52 JST


小林 (koichik) です.

Date:    Wed, 17 Dec 2008 13:02:48 +0900
From:    "IZUNO Tadashi" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16522] Re: [S2JDBC] 排他制御について

> ではサロゲートキーを使用していない場合、以下のケースでは排他制御は無理ということですよね。
> 
> >1.新規レコードを作成
> >2.そのレコードをAとBの画面で表示。
> >3.A画面でレコードを物理削除
> >4.A画面で同じキーで新規レコードを作成
> >5.B画面で更新
> 
> なにか対処方があればヒントをいただけるとありがたいです。

insert するエンティティのバージョンカラムに
タイムスタンプ (long 値) を設定すればよいかと.

Entity e = new Entity();
e.version = System.currentTimeMillis();
...
jdbcManager.insert(e).execute();

version フィールドの初期値をタイムスタンプに
してしまってもいいかも.

public class Entity {
  ...
  @Version
  public Long version = System.currentTimeMillis();
}

insert 時,version プロパティの値が null または
0 以下の場合は初期値として 1 が設定されますが,
1 以上の場合はそれがそのまま version カラムの
初期値になります.

Date:    Wed, 17 Dec 2008 13:54:05 +0900
From:    Yasuo Higa <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16523] Re: [S2JDBC] 排他制御について

> 今回、@VersionでTimestampサポートも必要だということがわかりました。
> S2JDBC自体でTimestampサポートを検討したいと思います。

Timestamp 型をサポートしなくても大丈夫じゃ
ないかなー.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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