Bạn nên sử dụng một kết nối cho mỗi tác vụ. Nếu bạn sử dụng kết nối tổng hợp, bạn không thể sử dụng các câu lệnh chuẩn bị được chuẩn bị bởi một số kết nối khác. Tất cả các đối tượng được tạo ra bởi kết nối (ResultSet, PreparedStatements) đều không hợp lệ để sử dụng sau khi kết nối được trả về pool.
Vì vậy, nó là như nhau
public void getSomeData() {
Connection conn = datasource.getConnection();
PreparedStatement st;
try {
st = conn.prepareStatement(...);
st.execute();
} finally {
close(st);
close(conn);
}
}
Vì vậy, trong trường hợp này tất cả các đối tượng DAO của bạn mất không kết nối, nhưng DataSource đối tượng (java.sql.DataSource) là nhà máy kết nối poolable thực sự. Và trong mỗi phương pháp đầu tiên bạn có được kết nối, làm tất cả công việc của bạn và kết nối chặt chẽ. Bạn nên trả lại kết nối với nhóm càng nhanh càng tốt. Sau khi kết nối trả lại, nó có thể không được đóng lại, nhưng được khởi động lại (tất cả các giao dịch đang hoạt động đóng, tất cả các biến phiên bị phá hủy, vv)
Nguồn
2009-07-25 15:05:50