关于HIbernate批量删除
在做Hibernate开发的时候,会遇到删除大量数据的情况,一般情况下不建议使用"delete from..."的语句,调用executeUpdate方法进行直接删除,因为ORM Framework为了同步化已经缓存的持久化对象,必须根据主键来一条一条删除,这样框架才能知道删除了哪些数据,从而把这些数据从缓存中清理掉,如果使用批量删除的话则做不到这样,例如下面:
String hql = "delete from User u where u.name like 'test%'"; Query query = session.createQuery(hql); query.executeUpdate(); // 如果现在有另外的session调用 anotherSession.load(User.class); // 这个时候则会读取到已经被删除的数据,如果非要解决这个问题的话,那就相当于实现 // 了一个内存SQL数据库,但是对于轻量级ORM框架来说还是太过于复杂