首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Hibernate时,@Immutable和@Entity(mutable=false)有什么区别

使用Hibernate时,@Immutable和@Entity(mutable=false)有什么区别
EN

Stack Overflow用户
提问于 2009-10-19 18:53:01
回答 2查看 24.3K关注 0票数 25

这两者之间的区别是什么?

应该在一个实体上使用一个还是两个?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-19 20:49:43

对于实体来说,这几乎没有区别。@Immutable获得了优先级(也就是说,如果您的实体同时被注释为@Immutable@Entity(mutable = "true"),那么它将被视为不可变的)。

@Immutable也可以用在语义基本相同的集合上。详情请参阅here

票数 24
EN

Stack Overflow用户

发布于 2018-04-04 20:57:55

org.hibernate.annotations.Entity注释已弃用,并将在Hibernate的未来版本中删除。

因此,如果您有不应该被Hibernate修改的实体,则应该始终使用@Immutabale注释。

@Immutable注释告诉Hibernate以只读模式加载实体,因此脏检查机制无法跟踪实体修改。

但是,仍然可以通过JPQLCriteria API批量更新查询来更新@Immutable实体。

要确保不会针对批量更新查询修改@Immutabale实体,从Hibernate 5.2.17开始,您可以设置以下配置属性:

代码语言:javascript
复制
<property
    name="hibernate.query.immutable_entity_update_query_handling_mode"
    value="exception"
/>

有了这个属性,批量更新查询将抛出异常,实体更新将被阻止。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1590422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档