- PR -

ResultSetオブジェクトの解放について

1
投稿者投稿内容
Takaishi
常連さん
会議室デビュー日: 2004/10/11
投稿数: 24
投稿日時: 2004-10-23 10:59
お世話になっています。
JDBCの結果セットResultSetオブジェクトについての質問です。
今までJDBCを何となく使ってきて、習慣でResultSetオブジェクトをclose()する処理を
書いてきましたが、これにはどういう意味があるのでしょうか?
APIドキュメントをみると、
「自動的にクローズされるとき、これを待つのではなく、ただちに ResultSet オブジェクトのデータベースと JDBC リソースを解放します。 」
とあります。
ResultSetオブジェクトは、データベースリソースへの参照を持っているということでしょうか?
つまり複数の参照トランザクションでResultSetオブジェクトを使い回すと、オーバーヘッドが生じてしまうという理解でよろしいですか?
間違っているようでしたらご指摘をお願いします。
また参考になる情報源などありましたら、教えてください。
よろしくお願いします。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-10-25 10:25
引用:

HOGEさんの書き込み (2004-10-23 10:59) より:
ResultSetオブジェクトは、データベースリソースへの参照を持っているということでしょうか?


DBサーバとJDBCドライバの実装依存ですが、その可能性があるということです。
ResultSet経由で高度なDBアクセスができるようなDBサーバとJDBCドライバなら、その可能性は高いですよ。

引用:

つまり複数の参照トランザクションでResultSetオブジェクトを使い回すと、オーバーヘッドが生じてしまうという理解でよろしいですか?



JVMのガベージコレクタによる自動的な開放がされるまでデータベースリソースを握りっぱなしになるので、環境やJavaソースの実装状況によっては、DBサーバー側のリソースが枯渇する恐れがあります。一種のリソースリークの原因となる可能性があるというわけです。
Takaishi
常連さん
会議室デビュー日: 2004/10/11
投稿数: 24
投稿日時: 2004-11-01 12:47
返信が遅くなりました。
シュンさんの解説で疑念解消です。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)