接続

2009-08-27 3 views
1

私は文と結果セットと一緒にそれを閉じることを忘れないでください接続

Connection con=DBConnection.createConnection(); 

のような接続オブジェクトを作成createConnection.I静的メソッドを持つクラスのDBConnectionを使用していますを閉じます。

今では通常のメソッドのcreateConnectionを有する同一のDBConnectionを持つと

DBConnection dbConnection=new DBConnection(); 
Connection con=dBConnection.createConnection(); 

のような新しいConnectionオブジェクトを作成し、ofcourseの私は、結果セット、文、接続を閉じることを忘れないでくださいされてどのように異なります。

もう1つの疑問は、接続を閉じることでガベージコレクションの対象になるということです。 con変数はnullに等しくなりますか?

答えて

4

インスタンスの静的メソッド(2番目の例)を呼び出すと、インスタンスを持たずに静的メソッドを呼び出すのと全く同じ結果になります(最初の例)。

スタティック・メソッドDBConnection.createConnection()は、接続の新しいインスタンスを作成します(これはファクト・メソッドと呼ばれます)。したがって、2番目の例では、2つのインスタンス(dbConnectionおよびcon)を効果的に作成しています。

閉じると、接続のインスタンスがGCに適格になりません。クローズするだけで、RDBMSへの基本的な物理接続がクローズされます。

+0

実際にはソースを知らないと、createConnection()が実際に新しい接続を作成し、プールから接続を返し、各呼び出しで同じ接続を返すかどうかを知る方法がありません。 –

+0

2番目のメソッドは、 DBConnectionオブジェクト 終了後にconの変数の結果はどうなりますか?それはヌルですか? –

+0

良い点。 –

関連する問題