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条记录,这样就不会造成内存的溢出了。
相关推荐
solarspot 2020-07-28
houmenghu 2020-11-17
我心似明月 2020-11-09
oraclemch 2020-11-06
ltd00 2020-09-12
康慧欣 2020-09-10
waveclouds 2020-09-04
蓝色深海 2020-09-15
jincheng 2020-09-01
思君夜未眠 2020-08-25
取个好名字真难 2020-08-06
歆萌 2020-08-03
阳光之吻 2020-08-03
婷婷小屋 2020-07-28
MLXY 2020-07-26
dxbjfu0 2020-07-26
songbinxu 2020-07-19
83520298 2020-07-06