另外,javax.persistence.EntityManager.remove()方法与上述两种方法有什么不同?
session.evict()之间的区别是什么
javax.persistence.EntityManager.detach()和
javax.persistence.EntityManager.remove(),session.delete()?
发布于 2018-05-29 12:22:41
这三种方法用于非常不同的事物。
remove()将持久化的实体标记为删除,这意味着hibernate在刷新时将生成相应的sql delete语句。evict()用于从内部缓存中删除实体(hibernate第一级缓存)。如果从db加载实体,hibernate将将其存储在缓存中,随后的查询将首先访问缓存。取消实体强制hibernate再次查询db。detach()。您基本上告诉hibernate停止跟踪实体修改(脏检查),这样如果您以任何方式更新它的字段,您就不会在db上反映这些更改。https://stackoverflow.com/questions/50581595
复制相似问题