Javaアプリに接続プールを追加しているところです。
このアプリは、さまざまなrdbmsesで動作し、デスクトップアプリとしてもヘッドレスWebサービスとしても動作します。基本的な実装は、デスクトップモード(rdbms = derby)で正常に機能します。Webサービス(rdbms = mysql)として実行している場合、良好な同時動作を得るには接続プールが必要であることがわかります。
私の最初のアプローチは、依存性注入を使用して、起動時に基本的なデータソースと接続プールのデータソースのどちらかを決定することでした。
このシナリオの問題は、connection.close()をいつ呼び出すかわからないことです。私の理解では、接続プールを使用する場合は、接続オブジェクトをリサイクルできるように、各クエリの後にclose()を実行する必要があります。ただし、現在の非プーリング実装は、可能な限りConnectionオブジェクトを保持しようとします。
この問題の解決策はありますか?基本的な接続オブジェクトをリサイクルする方法はありますか?スレッドプールされた接続オブジェクトでconnection.close()を呼び出さないとどうなりますか?
それとも、これら2つの接続戦略を組み合わせるのは単に悪い設計ですか?