两者之间有什么区别?
是否应在实体上使用一个或两个?
答案 0 :(得分:18)
对于实体,实际上没有区别。 @Immutable
获得优先权(即如果您将实体注释为@Immutable
和@Entity(mutable = "true")
,则它将被视为不可变的。)
@Immutable
也可用于具有几乎相同语义的集合。详细信息为here
答案 1 :(得分:8)
{@ 1}}注释已弃用,将在以后的Hibernate版本中删除。
因此,如果您的实体永远不会被Hibernate修改,则应始终使用org.hibernate.annotations.Entity
注释。
正如我在this article中所解释的那样,@Immutabale
注释告诉Hibernate以只读模式加载实体,因此dirty checking mechanism无法跟踪实体修改。
但是,@Immutable
实体仍然可以通过JPQL或Criteria API bulk update queries进行更新。
为了确保永远不会修改@Immutable
个实体以进行批量更新查询,从Hibernate 5.2.17开始,您可以设置以下配置属性:
@Immutabale
使用此属性后,批量更新查询将最终抛出异常,并且将阻止实体更新。