原因是为了删除对象,Hibernate要求对象处于持久状态。因此,Hibernate首先获取对象(SELECT),然后将其删除(DELETE)。
为什么Hibernate需要首先获取对象?原因是可能启用了Hibernate拦截器(http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/events.html),并且必须通过这些拦截器传递对象以完成其生命周期。如果直接在数据库中删除行,则拦截器将不会运行。
另一方面,可以使用批量 *** 作在单个SQL DELETE语句中删除实体:
Query q = session.createQuery("delete Entity where id = X");q.executeUpdate();
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)