2012-04-26 54 views
0

我不知道爲什麼我用roo命令創建新的實體,它總是有一個提交的名稱版本。Spring Roo提交版本的意思是什麼?

版本字段有什麼好處?

如果我不想要它,如何編寫不會在實體中生成版本文件的roo命令。

回答

2

該字段被註釋爲 @ javax.persistence.Version 這由實體管理器用於創建樂觀鎖定。

讓我們來看看這個場景: 有一個CD列表應用程序。

用戶可以用CD數據打開表單並修改它。 您不能鎖定數據庫中的記錄,並等待用戶想修改記錄(例如,使用SELECT ... FOR UPDATE),因爲它需要很長時間(從數據庫的角度來看)。讀取數據並返回到池後,連接最有可能關閉。

相反,當您保存記錄時,實體管理器會檢查數據庫中的版本字段,如果它與您發送的相同。如果是,則可以安全地保存更改並將版本增加1.如果在屏幕上編輯記錄時某人修改了記錄,則數據庫中的版本高於您的版本,您無法保存數據,因爲其他人已經做到了。 這實際上是鎖定的(你不能保存,如果別人做的)和opcimistic,因爲它只是在一個修改時「鎖定」,在大多數情況下不是這種情況,它不會在數據庫沒有使用時「不得不。

+0

Muge,非常感謝。請建議我閱讀更多,如書籍,網絡教程 – punny 2012-04-27 03:21:36