JDBCにおけるStatementとPreparedStatementの性能の比較
3960 ワード
1.シミュレーションテストの環境(1)2つの関数をそれぞれ作成して、StatementとPreparedStatementテスト方法(2)として、それぞれ10000個のデータをデータベースに挿入する.(3)StatementとPreparedStatementの比較にかかる時間テストは以下の通りである.
時間比較:Statement:-|100000-消費時間->11034ミリ秒-|200000-消費時間->20654 ms;-|500000-消費時間->52206ミリ秒;PreoaredStatement:-|100000-消費時間->10411ミリ秒-|200000-消費時間->20836 ms;-|500000-消費時間->48999ミリ秒;実験結果の比較データが増大するにつれて,PreparedStatementの効果はStatementの効果が良好であった.セキュリティ上PreparedStatementは前処理コンパイルされ、データのセキュリティ上PreparedStatementはStatementのsql注入による脆弱性の問題を防止することができます.
// Statement
@SuppressWarnings("unused")
private static void test_Statement() throws Exception {
long start=System.currentTimeMillis();
Connection con=null;
Statement state=null;
try{
con=DBUtil.getConnection();
con.setAutoCommit(false);
state=con.createStatement();
for(int x=0;x<500000;x++){
String sql="insert into user(name,password) values('"+"tim"+x+"',"+x+");";
int num=state.executeUpdate(sql);
}
}catch(Exception e){
con.rollback();
e.printStackTrace();
}
con.commit();
DBUtil.close(null, state, con);
System.out.println(" :"+(System.currentTimeMillis()-start));
}
// PreparedStatement
@SuppressWarnings("unused")
private static void test_PreparedStatement() throws Exception {
long start=System.currentTimeMillis();
Connection con=null;
PreparedStatement ps=null;
try{
con=DBUtil.getConnection();
con.setAutoCommit(false);
String sql="insert into user(name,password) values(?,?);";
ps=con.prepareStatement(sql);
for(int x=0;x<500000;x++){
ps.setString(1, "tim"+x);
ps.setInt(2, x);
ps.executeUpdate();
}
}catch(Exception e){
con.rollback();
e.printStackTrace();
}
con.commit();
DBUtil.close(null, ps, con);
System.out.println(" :"+(System.currentTimeMillis()-start));
}
時間比較:Statement:-|100000-消費時間->11034ミリ秒-|200000-消費時間->20654 ms;-|500000-消費時間->52206ミリ秒;PreoaredStatement:-|100000-消費時間->10411ミリ秒-|200000-消費時間->20836 ms;-|500000-消費時間->48999ミリ秒;実験結果の比較データが増大するにつれて,PreparedStatementの効果はStatementの効果が良好であった.セキュリティ上PreparedStatementは前処理コンパイルされ、データのセキュリティ上PreparedStatementはStatementのsql注入による脆弱性の問題を防止することができます.