hibernate批量处理

  • 当批量插入数据时,可能会造成内存溢出,可以每插入20条数据,同步一下数据库,清除缓存
 
方法一:
定期清除缓存
代码如下:
for (int i = 0; i < 1000000; i++) {
s.save(user); 
if (i % 20 == 0) { 
session.flush();//同步数据库 
session.clear();//清除缓存 
} 
}

方法二:
可以采用StatelessSession,此session不与一级和二级缓存交互;

  • 对于批量更新:
hibernate3.0之前:
           Query q = session.createQuery("from user");
            List<User> list = q.list();
            for (User u : list) {
                u.setName("name*");//此处u是持久态,所以无需s.save方法,自动关联session更新到数据库;
            }

hibernate3.0之后:<疑问>
        Query q = session.createQuery("update u set birthday=:bd from User as u");
        session.excuteUpdate();
        可以进行批量更新;
            





原文地址:https://www.cnblogs.com/zmpandzmp/p/3648769.html