そのため、PreparedStatementsはパフォーマンスに優れていると聞き続けています。
「PreparedStatement」よりも通常の「Statement」を使用するJavaアプリケーションがあります。より多くのPreparedStatementsを使用する方向に進んでいる間、私は、PreparedStatementsがクライアント側とサーバー側でどのように機能するかをより完全に理解しようとしています。
それで、いくつかの典型的なCRUD操作があり、アプリケーションでオブジェクトを繰り返し更新する場合、PSを使用するのに役立ちますか?毎回PSを閉じる必要があることを理解しています。そうしないと、カーソルリークが発生します。
では、パフォーマンスにどのように役立ちますか?ドライバはプリコンパイルされたステートメントをキャッシュし、次にconnection.prepareStatementを実行するときにコピーを提供しますか?または、DBサーバーは役に立ちますか?
PreparedStatementsのセキュリティ上の利点についての議論を理解し、それを強調する以下の回答に感謝します。ただし、PreparedStatementsのパフォーマンス上の利点に焦点を当ててこの議論を続けたいと思います。
更新:データの更新と言うとき、私は実際には、そのメソッドがランダムに数回呼び出されるという意味でより多くのことを意味します。ループ内でステートメントを再利用するように求める以下の回答の利点を理解しています。
// some code blah blah
update();
// some more code blah blah
update();
....
public void update () throws SQLException{
try{
PreparedStatement ps = connection.prepareStatement("some sql");
ps.setString(1, "foobar1");
ps.setString(2, "foobar2");
ps.execute();
}finally {
ps.close();
}
}
'ps' javaオブジェクトを実際に再利用する方法はなく、実際のconnection.prepareStatement呼び出しは非常にコストがかかることを理解しています。
それが私を元の質問に戻すものです。この「いくつかのSQL」PreparedStatementは、私が知らないカバーの下でまだキャッシュされ、再利用されていますか?
また、いくつかのデータベースをサポートしていることにも言及する必要があります。
前もって感謝します。