Hibernate 批量处理语句解决思路
Hibernate 批量处理语句在配置文件中写property namehibernate.jdbc.batch_size20/property和在程
Hibernate 批量处理语句
在配置文件中写
<property name="hibernate.jdbc.batch_size">20</property>
和在程序中写
Java codewhile(xxx) { ..... session.update(object); if(count%20==0) { session.flush(); session.cleat(); } count++;}
有什么区别.
为什么要在配置中 和 程序中同时设置,批量语句的大小
[解决办法]关注
[解决办法]没区别吧。
不需要同时设置吧。。
[解决办法]第一个是jdbc的..第二个是Hibernate的一级缓存Session,session的执行update方法是并不是马上写入数据而是缓存在内存里面,当你处理大批量数据一次性更新的时候,会占用非常多的内存来缓存被更新的对象..有的甚至内存溢出问题,所以批量的时候调用session.flush();session.clear();将本批(你的是20一批)插入的对象立即写入数据库并且释放内存,就是session.clear()来清空一级缓存..最后一般调用tx.commit();session.close();把剩下的插入数据库,关闭session..
[解决办法]