-5

接続が物理的な接続ではなく、ConnectionPoolDataSource からの抽象化である場合、接続を SQL 操作の周りにしっかりとラップするか、アプリケーションを通じて接続を持続させる方がよいでしょうか? (記録のために、c3p0 を使用しています。)

同等に (私は思う): アプリケーションごとに getConnection() を 1 回行うと、c3p0 は、基礎となる物理接続が停止して復活しても停止しない安定した接続のように見えるでしょうか?

また、接続をエフェメラルにすることになっている場合、永続的な準備済みステートメントを使用してこれをどのようにプログラムすればよいでしょうか?

4

1 に答える 1

1

さて、これは元の質問に戻ります - 多くの接続がある場合、接続間で PreparedStatement を共有するにはどうすればよいですか? 接続が作成されるため、独自の PreparedStatements が作成されると思いました。

それがあなたの唯一の質問である場合 (正直なところ、最初の質問からは明確ではありませんでした)、これについてまったく心配する必要はありません。JDBC ドライバーと DB は、必要に応じてそれらをキャッシュします。それはあなたの責任ではありません。通常の JDBC の慣用句に従って、できるだけ短いスコープで DB リソースを取得してクローズするだけです。

または、Java EE Web アプリケーションの場合は、JPA を調べて JDBC ボイラープレートをワンライナーに減らし、EJB を調べて、(自動) コミットとロールバックをいじる必要がないように、トランザクション処理をコンテナーに完全に委任します。

于 2012-05-11T21:59:34.173 に答える