[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 10518] Re: DB トランザク ション度々 commit/rollback を書きたくない)



宮本@muimiです。


>> ちなみにConnection#close()すると
>> Statement#close()
>> ResultSet#close()
>> は自動的にしてくれますよね?
>> JDKの仕様上は。
>snip
>
>  現実には、Driverの実装によっては、そうとは限らないようです。


ありがとうございます。
そんな実装はいいのか?という疑問も残りますが、
リソースの無駄な利用を避けるためにも、
ResultSet#close()/Statement#close()も毎度やっておいた方がいいってことで
すね。


※補足
JDK1.4APIドキュメントの記述(抜粋)

■Connection#close()
Connection オブジェクトは、ガベージコレクトされるときに自動的にクローズ
されます。特定の致命的エラーの場合も、Connection オブジェクトはクローズ
されます。 

■Statment#close()
Statement オブジェクトは、ガベージコレクトされるときは自動的にクローズさ
れます。Statement オブジェクトがクローズされるとき、その現在の ResultSet 
オブジェクトが存在すれば、それもクローズされます。 

データベースのリソースを占有するのを避けるために、通常は、作業が終了した
らすぐにリソースを解放するようにしてください。 

■ResultSet#close()
ResultSet オブジェクトは、このオブジェクトを生成した Statement オブジェ
クトが閉じられるとき、再実行されるとき、または一連の複数の結果から次の結
果を取り出すのに使用されるときに、その Statement によって自動的にクロー
ズされます。ResultSet オブジェクトがガベージコレクトされるときにも自動的
にクローズされます。