2014年3月11日火曜日

SkinnyORMでのTimestampsFeatureとOptimisticLockWithVersionFeature


こんばんは。ぎっくり腰も徐々に癒えてきた私です。

毎度毎度ですが、ビデオチャットデモで利用している技術の備忘録的なブログです。

Play2を利用していますがORMにAnormを利用せずに、SkinnyORMを利用しています。
理由は日本人が作ったFrameworkで世界的に大流行りしているからです。
(正確にはScalikeJDBCですが。。。)

Seasarのように日本だけの独りよがりFrameworkにならなそうな雰囲気があり、思わず採用してしまいました!!

で、SkinnyORMにはいろいろ機能がありますが中でも

  • TimestampsFeature
  • OptimisticLockWithVersionFeature
は気になる機能だと思います。

TimestampsFeatureは更新の度に、指定の更新日付を勝手に現在時刻で更新してくれます。

OptimisticLockWithVersionFeatureは、その名の通りで楽観的排他を更新回数の項目を利用して実現します。
楽観的排他の実現にはOptimisticLockWithTimestampFeatureというのもあり、更新日付を利用することもできます。

今回、どのくらい更新されているのか?知りたくてOptimisticLockWithVersionFeatureを利用して楽観的排他を実現しています。

しかし、こうなると一つ問題が生じるようです!!

それは・・・TimestampsFeatureが動かなくなる!!のです。

TimestampsFeatureはupdateByIdで主キーを指定した場合に動くようで、排他を利用するためにupdateByIdAndVersionで主キーと排他制御項目を指定すると動かないみたい・・・

ちょっとショック!!

まぁ、エンティティのtraitに更新日付を現在日付にする実装を施せばいいだけの話だけどね☆

そんなことがあったんだとビデオチャットデモを眺めてみてください(笑

0 件のコメント:

コメントを投稿