javax.persistence.EntityManager.remove()该方法与上述两种方法有何不同?
session.evict() 之间有什么区别,
javax.persistence.EntityManager.detach() 和
javax.persistence.EntityManager.remove() 、 session.delete() ?
这三种方法用于非常不同的事情。
remove()将持久化实体标记为要删除,这意味着在刷新时 Hibernate 将生成相应的sql删除语句。evict()用于从内部缓存(休眠一级缓存)中删除实体。如果从 hibernate 加载实体,db会将其存储在缓存中,后续查询将首先命中缓存。驱逐实体会强制休眠db再次查询。detach()当您想要使实体不受管理时使用。您基本上告诉 hibernate 停止跟踪该实体修改(脏检查),这样如果您以任何方式更新它的字段,您就不会在db.