2012-04-26 6 views
0

私はなぜrooコマンドで新しいエンティティを作成するのかわかりませんが、常にファイル名のバージョンがあります。Spring Rooでファイルされたバージョンの平均は何ですか?

バージョンフィールドのメリットは何ですか?

もし私が望んでいなければ、エンティティにバージョンファイルを生成しないrooコマンドを書く方法。

答えて

2

フィールドは、これは楽観的ロックを作成するには、エンティティ・マネージャによって使用されjavax.persistence.Version @ でannotetedされます。

このシナリオを考えてみましょう: CDリストアプリがあります。

ユーザーは、CDデータでフォームを開いて変更することができます。 レコードをデータベースにロックすることはできず、(データベースの観点から)時間がかかるので、ユーザーがレコードを変更するのを待つことはできません(SELECT ... FOR UPDATEなど)。ほとんどの場合、データを読み取った後に接続が閉じられ、プールに戻されます。

代わりに、レコードを保存するとき、Entity Managerは、送信したものと同じ場合、データベースのバージョンフィールドをチェックします。そうであれば、安全に変更を保存してバージョンを1増やすことができます。画面上で編集中に誰かがレコードを変更した場合、データベースに保存されているバージョンはあなたのものより高くなり、他の人がすでにそれをしていたからです。 これは実際にはロックされています(他の人が行った場合は保存できません)。また、ほとんどの場合は変更されていないときにはデータベースを使用しない場合にのみ「ロック」するため、 〜する必要があります。

+0

Muge、ありがとうございます。本、ウェブチュートリアルなど、もっと読むことをお勧めします – punny

関連する問題