首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate中兑现批量插入

2012-08-30 
Hibernate中实现批量插入批量插入数据会带来性能上的损耗,但是合理的设置会使性能得到最大的优化。我们来看

Hibernate中实现批量插入

批量插入数据会带来性能上的损耗,但是合理的设置会使性能得到最大的优化。我们来看一个批量插入的代码:

  Session session = sessionFactory.openSession();  Transaction tx = session.beginTransaction();  for ( int i=0; i<100000; i++ ) {  Customer customer = new Customer(.....);  session.save(customer); }  tx.commit();  session.close();

?

这个代码试图把1000000条customer记录批量插入到数据库,但是这会带来内存的溢出,因为hibernate在commit()之前,会将所有的数据放到缓存当中,当缓存满了以后自然就溢出了。所以经过改进,代码可以这么写:

Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();for ( int i=0; i<100000; i++ ) {     Customer customer = new Customer(.....);     session.save(customer);     if ( i % 20 == 0 ) {    //flush 插入数据和释放内存:    session.flush(); session.clear(); }}tx.commit();session.close();

?每次只插入20条记录,这样就不会造成内存的溢出了。

热点排行