タスクごとに1つの接続を使用する必要があります。接続プーリングを使用する場合は、他の接続によって準備されたプリペアドステートメントを使用することはできません。接続によって作成されたすべてのオブジェクト(ResultSet、PreparedStatements)は、接続がプールに返された後で使用するために無効です。
だから、それはすべてあなたのDAOオブジェクトが接続していない取り、この場合には
public void getSomeData() {
Connection conn = datasource.getConnection();
PreparedStatement st;
try {
st = conn.prepareStatement(...);
st.execute();
} finally {
close(st);
close(conn);
}
}
ので似ていますが、実際にプール可能な接続工場ですDataSourceオブジェクト(は、java.sql.DataSource)。そして、それぞれの方法で最初にすべての接続を取得し、すべての作業を行い、接続を閉じます。できるだけ早くプールに接続してください。接続が返された後、物理的に閉じられないかもしれないが、再初期化される(すべてのアクティブなトランザクションが閉じられ、すべてのセッション変数が破棄されるなど)