Ebean は両方の方法をサポートしているようですが、@version または all アプローチを使用する場合の実際の違いは何ですか? Ebean で @version を使用しない理由はありますか?
質問する
837 次
1 に答える
1
モデルを自分で制御できる場合、「すべての列」バージョンを使用する理由はわかりません。私が見た「すべて」の方法の利点は次のとおりです。
- 開発者にとっては簡単です。コーディングがまったく必要ないため、この方法は、並行性チェックとは何かを知らない開発者でも機能します。
- それは絶対確実です。期待値に対してすべての列をチェックすることで、誰かの変更を上書きしないことを確認できます
一方で、効率は低くなります (すべての列をチェックすることは、単一の列をチェックするよりも手間がかかります)。また、データベース内のデータが変更されたと ebean が認識した Play Framework でのカスケード削除にも問題がありました。
私が思いつくバージョンスキームの欠点は
- オブジェクトを更新するときにバージョン フィールドを更新するのを時々忘れると、それらの更新に対するロック保護が得られません。ほとんどの場合、すべてが完全に機能するため、このバグを見つけるのは非常に困難です。
- データベースにバージョンまたは「最後に変更された」フィールドがまだない場合は、新しい列を追加する必要がありますが、これには当然、多少のスペースと時間がかかります。
これらの欠点はどちらも深刻ではないと思います。自分が何をしているのかを知っていて (そして、質問をすることでそれを証明済みです ;))、バージョン フィールドを更新するのを忘れない自信があるなら、先に進んでください!
于 2013-03-21T15:38:51.220 に答える