不可变对象&更新

时间:2015-05-29 17:59:02

标签: java database hibernate jpa immutability

如果我使用名为Name的不可变类来存储人名,并且有人想要更改他们的名字,则不应该更新他们的名字(基本上删除旧条目并插入新条目)?这似乎与不可变的定义(通过注释)相矛盾,因为更新实体将被忽略。如果需要更新存储在数据库中的不可变类,我该怎么办?它是否应该映射为@Immutable,即使它是一个不可变的类?

1 个答案:

答案 0 :(得分:1)

参考文献说:

  

当实体为只读时:

     
      
  • Hibernate 不会检查实体的简单属性或   单端协会;
  •   
  • Hibernate不会更新简单属性   或可更新的单端关联;
  •   
  • Hibernate不会更新   只读简单属性或只读实体的版本   单端可更新关联已更改;
  •   

它还说:

  

在某些方面,Hibernate将只读实体视为与实体相同   这不是只读的:

     
      
  • Hibernate将操作级联到实体中定义的关联   映射。
  •   
  • 如果实体有集合,Hibernate会更新版本   变化会污染实体;
  •   
  • 只读实体即可   删除即可。
  •   

所以,我认为你必须删除()实例,而不是自己再次使用新名称保存(),因为脏检查不会发生在只读实体上。

参考:Read-only entities