0
如果我使用名爲Name
的不可變類來存儲人名,並且有人想更改他們的名字,那麼他們的名字不應該更新(基本上刪除舊條目並插入新條目)?這似乎與不可變的定義(通過註釋)相矛盾,因爲更新實體將被忽略。如果存儲在數據庫中的不可變類需要更新,我應該怎麼做?即使它是不可變類,它是否應該被映射爲@Immutable
?不可變的對象和更新
如果我使用名爲Name
的不可變類來存儲人名,並且有人想更改他們的名字,那麼他們的名字不應該更新(基本上刪除舊條目並插入新條目)?這似乎與不可變的定義(通過註釋)相矛盾,因爲更新實體將被忽略。如果存儲在數據庫中的不可變類需要更新,我應該怎麼做?即使它是不可變類,它是否應該被映射爲@Immutable
?不可變的對象和更新
基準說:
當實體是隻讀的:
- 休眠不髒檢查實體的簡單屬性或 單端關聯;
- Hibernate不會更新簡單屬性 或可更新的單端關聯;
- 如果只更改簡單屬性或更改單端可更新關聯,則Hibernate不會更新只讀實體的 版本;
而且它也說:
在某些方面,休眠對待只讀實體相同的實體 未只讀:
- Hibernate的級聯操作到實體 映射中定義的關聯。
- 如果實體擁有一個集合 ,Hibernate會更新版本,其中的更改會使實體變得髒亂;
- 只讀實體可以是 刪除。
所以,我認爲你必須與新的名字來刪除()的情況下,比保存()它自己的髒檢查將不會在只讀實體發生。