【初心者】Java質問・相談スレ47【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0727デフォルトの名無しさん
NGNG一つ質問です。 WEBアプリでDB2に対してSQLを発行して結果を受けるプログラムで
お約束として、最後にPreparedStatement と、ResultSet をcloseするのはなぜですか?と質問を受けました。
恥ずかしながら、そこまで考えず使ってました。理由を聞かれて明確な答えが出ないので 皆様の知恵を貸してください
少し調べて考えた結果、closeする理由は
1.サーバーのキャッシュ上に照会結果を残しておくのはセキュリティ上良くない
2.キャッシュからデータを取得すると レスポンスはあがるが
実際のWEBアプリでは、データ数が数百万件になるのでキャッシュ容量を確保するため。
また、リブートするとメモリはクリアされるが、24時間稼動のWEBアプリでは不可能なため
3.即時性を求める場合(メンテナンスフラグとか)の場合は、毎回closeして破棄し毎回データを取得すべきだ
うーん、いまいちです。 どうかご教授願います。
以下はサンプルプログラムです。
//会員テーブルにIDを引数として名前を取得するSQL
String sql = "SELECT NAME FROM MEMBER WHERE MEMBER_ID = ?";
PreparedStatement ps = conn.prepareStatement(sql);
for ( int number_ = 0 ; number_ < 10000 ; number_++ ) {
ps.setString(1,number_);
ResultSet rs = ps.executeQuery();
while ( rs.next() ) {
Beanとかに格納
}
rs.close(); ←ここ
ps.close();
■ このスレッドは過去ログ倉庫に格納されています