原因是为了删除对象,Hibernate要求对象处于持久状态。因此,hibernate首先获取对象(选择),然后将其删除(删除)。
为什么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();


