Java:PreparedStatementの使用方法は?
2005年4月22日 開発PreparedStatementはSQLのパフォーマンスを向上させる為のクラスです。
発行したSQLをキャッシュする事で、同じSQLを発行する場合に構文チェック等を行わない為、パフォーマンスの向上が期待できます。
とはいっても、実は実際のパフォーマンスはそれほど向上するわけではないです。
PreparedStatementを生成した後、closeするまでに何回も発行するような場合はそれなりに向上すると思いますが、普通は一回発行したらcloseしてしまって、又呼ばれるといった形になると思うので、その場合はデータベース側にキャッシュされている分の恩恵しか得られません。
とはいっても場合によってパフォーマンスが向上するのですから、使ってみましょうという事で(笑)。
1.パラメータ付きSQLを作成する。
例)
Strig sql = "SELECT * FROM TEST WHERE NO = ? AND VALUE = ?";
2.PreparedSttementオブジェクトを生成する。
例)
PreparedSttement stmt = con.prepareStatement(sql);
※conはConnectionクラス
3.実行前にパラメータを設定する。
例)
stmt.setInt(1);
stmt.setString("test");
※NOカラムを数値型、VALUEカラムを文字型とします。
4.実行する。
例)
stmt.executeQuery();
参考URL
http://www.atmarkit.co.jp/fjava/rensai2/webopt11/webopt11.html
参考書籍
Java 逆引き大全550の極意 P.516
発行したSQLをキャッシュする事で、同じSQLを発行する場合に構文チェック等を行わない為、パフォーマンスの向上が期待できます。
とはいっても、実は実際のパフォーマンスはそれほど向上するわけではないです。
PreparedStatementを生成した後、closeするまでに何回も発行するような場合はそれなりに向上すると思いますが、普通は一回発行したらcloseしてしまって、又呼ばれるといった形になると思うので、その場合はデータベース側にキャッシュされている分の恩恵しか得られません。
とはいっても場合によってパフォーマンスが向上するのですから、使ってみましょうという事で(笑)。
1.パラメータ付きSQLを作成する。
例)
Strig sql = "SELECT * FROM TEST WHERE NO = ? AND VALUE = ?";
2.PreparedSttementオブジェクトを生成する。
例)
PreparedSttement stmt = con.prepareStatement(sql);
※conはConnectionクラス
3.実行前にパラメータを設定する。
例)
stmt.setInt(1);
stmt.setString("test");
※NOカラムを数値型、VALUEカラムを文字型とします。
4.実行する。
例)
stmt.executeQuery();
参考URL
http://www.atmarkit.co.jp/fjava/rensai2/webopt11/webopt11.html
参考書籍
Java 逆引き大全550の極意 P.516
コメント