2

Ebean は両方の方法をサポートしているようですが、@version または all アプローチを使用する場合の実際の違いは何ですか? Ebean で @version を使用しない理由はありますか?

http://www.avaje.org/occ.html

4

1 に答える 1

1

モデルを自分で制御できる場合、「すべての列」バージョンを使用する理由はわかりません。私が見た「すべて」の方法の利点は次のとおりです。

  1. 開発者にとっては簡単です。コーディングがまったく必要ないため、この方法は、並行性チェックとは何かを知らない開発者でも機能します。
  2. それは絶対確実です。期待値に対してすべての列をチェックすることで、誰かの変更を上書きしないことを確認できます

一方で、効率は低くなります (すべての列をチェックすることは、単一の列をチェックするよりも手間がかかります)。また、データベース内のデータが変更されたと ebean が認識した Play Framework でのカスケード削除にも問題がありました。

私が思いつくバージョンスキームの欠点は

  • オブジェクトを更新するときにバージョン フィールドを更新するのを時々忘れると、それらの更新に対するロック保護が得られません。ほとんどの場合、すべてが完全に機能するため、このバグを見つけるのは非常に困難です。
  • データベースにバージョンまたは「最後に変更された」フィールドがまだない場合は、新しい列を追加する必要がありますが、これには当然、多少のスペースと時間がかかります。

これらの欠点はどちらも深刻ではないと思います。自分が何をしているのかを知っていて (そして、質問をすることでそれを証明済みです ;))、バージョン フィールドを更新するのを忘れない自信があるなら、先に進んでください!

于 2013-03-21T15:38:51.220 に答える