首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我们有javax.persistence.EntityManager.detach(),为什么需要session.evict()?

如果我们有javax.persistence.EntityManager.detach(),为什么需要session.evict()?
EN

Stack Overflow用户
提问于 2018-05-29 10:04:12
回答 1查看 1.6K关注 0票数 3

另外,javax.persistence.EntityManager.remove()方法与上述两种方法有什么不同?

session.evict()之间的区别是什么

javax.persistence.EntityManager.detach()和

javax.persistence.EntityManager.remove(),session.delete()?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-29 12:22:41

这三种方法用于非常不同的事物。

  1. remove()将持久化的实体标记为删除,这意味着hibernate在刷新时将生成相应的sql delete语句。
  2. evict()用于从内部缓存中删除实体(hibernate第一级缓存)。如果从db加载实体,hibernate将将其存储在缓存中,随后的查询将首先访问缓存。取消实体强制hibernate再次查询db
  3. 当您想要使实体非托管时,将使用detach()。您基本上告诉hibernate停止跟踪实体修改(脏检查),这样如果您以任何方式更新它的字段,您就不会在db上反映这些更改。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50581595

复制
相关文章

相似问题

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