今天上午写个程序要将几张表内的数据读出写入一张表(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(); } }上面的BATCH_SIZE我设置的是100,即每100条数据提交一次。