0

roo コマンドで新しいエンティティを作成する理由がわかりません。常にファイル名のバージョンがあります。

バージョン フィールドの利点は何ですか?

欲しくない場合は実体にバージョンファイルを生成しないrooコマンドの書き方。

4

1 に答える 1

2

このフィールドには @javax.persistence.Version の注釈が付けられます。これは、楽観的ロックを作成するためにエンティティ マネージャによって使用されます。

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

ユーザーは、CD データを含むフォームを開き、変更することができます。(データベースの観点から)時間がかかりすぎるため、データベース内のレコードをロックして、ユーザーがレコードを変更するかどうかを待つことはできません(たとえば、SELECT ... FOR UPDATEを使用)。ほとんどの場合、データの読み取り後に接続が閉じられ、プールに返されます。

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

于 2012-04-26T14:21:08.333 に答える