- - PR -
ResultSetオブジェクトの解放について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-10-23 10:59
お世話になっています。
JDBCの結果セットResultSetオブジェクトについての質問です。 今までJDBCを何となく使ってきて、習慣でResultSetオブジェクトをclose()する処理を 書いてきましたが、これにはどういう意味があるのでしょうか? APIドキュメントをみると、 「自動的にクローズされるとき、これを待つのではなく、ただちに ResultSet オブジェクトのデータベースと JDBC リソースを解放します。 」 とあります。 ResultSetオブジェクトは、データベースリソースへの参照を持っているということでしょうか? つまり複数の参照トランザクションでResultSetオブジェクトを使い回すと、オーバーヘッドが生じてしまうという理解でよろしいですか? 間違っているようでしたらご指摘をお願いします。 また参考になる情報源などありましたら、教えてください。 よろしくお願いします。 | ||||||||
|
投稿日時: 2004-10-25 10:25
DBサーバとJDBCドライバの実装依存ですが、その可能性があるということです。 ResultSet経由で高度なDBアクセスができるようなDBサーバとJDBCドライバなら、その可能性は高いですよ。
JVMのガベージコレクタによる自動的な開放がされるまでデータベースリソースを握りっぱなしになるので、環境やJavaソースの実装状況によっては、DBサーバー側のリソースが枯渇する恐れがあります。一種のリソースリークの原因となる可能性があるというわけです。 | ||||||||
|
投稿日時: 2004-11-01 12:47
返信が遅くなりました。
シュンさんの解説で疑念解消です。 ありがとうございました。 |
1