3

オブジェクトが使用されている限り、データベースへの接続を開いたままにしておくことで、データベース要求を少し速くすることを考えていました。そのため、そのクラスのコンストラクターで接続を開くことを考えていました。問題は、使用を停止した後に接続を閉じるにはどうすればよいですか?どこかでclose()を呼び出さなければなりませんね。私はfinalize()メソッドについて読んでいますが、人々はこのメソッドの使用についてどこでも懐疑的であるように見えました。デストラクタのようなものがあると思いますが、Javaにはありません。

それで、誰かが私に解決策を提供できますか?前もって感謝します。

4

2 に答える 2

4

クラスをjava.io.Closeableの実装者にすることをお勧めします。このインターフェースによるとvoid close() throws IOException、クラスのすべてのクライアントが呼び出すを実装する必要があります。これはCloseable、使用後にクラスを閉じることをお勧めするためです。

于 2012-05-29T11:35:09.083 に答える
4

アプリケーションで許可されている場合は、データベース接続プールを実装することをお勧めします。接続プールを使用すると、接続のプールが作成され、データベースへの接続が維持されます。次に、アプリケーションはプールから開いている/未使用の接続を取得し、それを使用してプールに返します。

これにより、接続をより速く取得でき、クラスをあまり変更する必要がなくなります。アプリケーションを拡張する必要がある場合、データベース接続プーリングは優れた手法です。

もう1つの利点は、データベース接続プールが、接続のオープン、オープンの維持、必要に応じてプールの拡大、および特定の量の追加の接続が使用されない場合のプールの縮小を処理する、ある種のドライバーによって管理されることです。時間。これは、コンストラクターとファイナライズメソッドに実装しようとしているコードに似ています。

一般的に言えば、必要な場合にのみデータベース接続を取得し、できるだけ早く解放します。

于 2012-05-29T11:40:22.050 に答える