关于HIbernate批量删除_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 关于HIbernate批量删除

关于HIbernate批量删除

 2011/10/27 8:15:55  puzhijun  http://puzhijun.iteye.com  我要评论(0)
  • 摘要:在做Hibernate开发的时候,会遇到删除大量数据的情况,一般情况下不建议使用"deletefrom..."的语句,调用executeUpdate方法进行直接删除,因为ORMFramework为了同步化已经缓存的持久化对象,必须根据主键来一条一条删除,这样框架才能知道删除了哪些数据,从而把这些数据从缓存中清理掉,如果使用批量删除的话则做不到这样,例如下面:Stringhql="deletefromUseruwhereu.namelike'test%'";Queryquery=session
  • 标签: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框架来说还是太过于复杂
  

   不知道Hibernate现在的版本是否有解决这个问题,所以在使用hibernate做批量删除和做二级缓存的时候一定要谨慎,因为批量删除无法保证缓存数据的一致性
   数据的批量更新也是如此。
   以上为个人总结,大部分来自于《深入浅出Hibernate》。
发表评论
用户名: 匿名