[Seasar-user:10532] Re: [S2Dao]Timestampの排他について

Hirotaka HONMA [E-MAIL ADDRESS DELETED]
2007年 9月 14日 (金) 16:33:03 JST


本間です。

on Fri, 14 Sep 2007 16:14:30 +0900
in [Seasar-user:10530] [S2Dao]Timestampの排他について
"Minoru Taki" <[E-MAIL ADDRESS DELETED]> wrote:

>  S2DaoのTimestampの排他でふと気付いたのですが、
>  自動生成の更新のSQLではnew java.sql.Timestamp(long)を
>  Beanのプロパティにセットする仕様のようですが、、
>  これはプロセスが動作しているシステム時間を表しますよね?

はい。

>  同一サーバ内で動作しているなら問題がなさそうですが、
>  APサーバとDBが違うサーバだったり、APサーバがクラスター構成だった場合は
>  厳密な話でいえば完全な排他とは言えないと思います。
> #・・・かといって、直ちに問題がでるかは別ですが。

はい。
まあ複数台構成へ話を広げなくても、1台だけでも同一timestampは
起こりえますので、

>  Timestampをnewするのではなく、SQLでSYSTIMESTAMP(Oracleのみ?)を
>  設定するのであれば問題がない気がしますが、実装できたとしても
>  元のBeanに更新時刻を返すには、再検索せねばならないですよね?
> 
>  やはり、推奨されるVersionNoでの管理が良いのでしょうか?

versionNoを推奨します、となります。
タイムスタンプをDBから取るにしても、同時だとやはり排他が効か
ないでしょうし。


> #VersionNoの場合いろいろと心配事が・・・。
>  VersionNoの場合、VersionNoが桁のMax値に到達した場合は、
>  どうなるでしょうか?
>  (サイクリックになる?)

intとして+1しているだけですから、
0 → 正のMAX → 負のMAX → 0 という感じでサイクリックになる
と思います。




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