假设一个条件,比如一次性对数据库进行插入1000条记录,按照现在的想法可能是循环1000遍JDBC的插入函数,当
然,这样绝对是可行的,但是会带来时间上的加长而且估计是效率不高,所以对于大量数据的插入,JDBC提供了批处
理功能,这样可以一次性插入大量数据。现在以插入1000条数据为例子,来说明一下批处理功能的使用
package com.bird.jdbc;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class BatchTest {
public static void main(String[] args) throws Exception{
long begin=System.currentTimeMillis();
test();
long end = System.currentTimeMillis();
System.out.println(end-begin);
}
public static void test() throws Exception{
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn=Temple.getConnection();
String sql = "insert into user(name,birthday,money) values(?,?,?)";
ps = conn.prepareStatement(sql);
for(int i = 0; i < 1000; i++){
ps.setString(1, "name"+i);
ps.setDate(2, new Date(System.currentTimeMillis()));
ps.setFloat(3, 100+i);
ps.addBatch();//添加批处理
}
ps.executeBatch();//执行批处理
}finally{
Temple.free(conn, ps, rs);
}
}
}
其实很简单,就是添加批处理,然后提交批处理,这样能带来效率上的提高,Hibernate框架的封装会带来性能上的缺
失,所以Hibernate框架内部使用一些批处理功能,将提交的sql积攒一下再进行提交,这样能一定限度上优化一下性
能。