2015-05-29 101 views
0

如果我使用名爲Name的不可變類來存儲人名,並且有人想更改他們的名字,那麼他們的名字不應該更新(基本上刪除舊條目並插入新條目)?這似乎與不可變的定義(通過註釋)相矛盾,因爲更新實體將被忽略。如果存儲在數據庫中的不可變類需要更新,我應該怎麼做?即使它是不可變類,它是否應該被映射爲@Immutable不可變的對象和更新

回答

1

基準說:

當實體是隻讀的:

  • 休眠不髒檢查實體的簡單屬性或 單端關聯;
  • Hibernate不會更新簡單屬性 或可更新的單端關聯;
  • 如果只更改簡單屬性或更改單端可更新關聯,則Hibernate不會更新只讀實體的 版本;

而且它也說:

在某些方面,休眠對待只讀實體相同的實體 未只讀:

  • Hibernate的級聯操作到實體 映射中定義的關聯。
  • 如果實體擁有一個集合 ,Hibernate會更新版本,其中的更改會使實體變得髒亂;
  • 只讀實體可以是 刪除

所以,我認爲你必須與新的名字來刪除()的情況下,比保存()它自己的髒檢查將不會在只讀實體發生。

參考:Read-only entities