今天上午写个程序要将几张表内的数据读出写入一张表(2w多数据),开始没有使用批处理(每条写入都自动commit),写入速度在分钟级(太慢了后来就没计时),后来添加了批处理(不自动commit),全部用时20多秒。可见批处理写入数据库要快很多。程序大致结构如下:


EntityManager em = JPA.em();
em.setFlushMode(FlushModeType.COMMIT);
for(int i=0;i<20000;i++){
	MaterialInfo mi = new MaterialInfo();
	//set...
	em.persist(mi);
	if(i%BATCH_SIZE==0){
		em.flush();
	}
}