Phần mã tiêu chuẩn của chúng tôi để sử dụng JDBC là ...
Connection conn = getConnection(...);
Statement stmt = conn.conn.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rset = stmt.executeQuery (sqlQuery);
// do stuff with rset
rset.close(); stmt.close(); conn.close();
Câu hỏi 1: Khi sử dụng Nhóm kết nối, người ta có nên đóng Kết nối ở cuối không? Nếu vậy, không phải mục đích của việc gộp chung đã mất đi? Và nếu không, làm cách nào DataSource biết khi nào một phiên bản cụ thể của Connection được giải phóng và có thể được sử dụng lại? Tôi hơi bối rối về điều này, bất kỳ con trỏ nào được đánh giá cao.
Câu hỏi 2: Phương pháp sau đây có gì gần với tiêu chuẩn không? Có vẻ như một nỗ lực để lấy kết nối từ nhóm và nếu không thể thiết lập DataSource, hãy sử dụng DriverManager kiểu cũ. Chúng tôi thậm chí không chắc phần nào đang được thực thi trong thời gian chạy. Lặp lại câu hỏi ở trên, người ta có nên đóng Kết nối ra khỏi một phương pháp như vậy không?
Xin cảm ơn - MS.
synchronized public Connection getConnection (boolean pooledConnection)
throws SQLException {
if (pooledConnection) {
if (ds == null) {
try {
Context envCtx = (Context)
new InitialContext().lookup("java:comp/env");
ds = (DataSource) envCtx.lookup("jdbc/NamedInTomcat");
return ds.getConnection();
} catch (NamingException e) {
e.printStackTrace();
}}
return (ds == null) ? getConnection (false) : ds.getConnection();
}
return DriverManager.getConnection(
"jdbc:mysql://"+ipaddy+":"+dbPort +"/" + dbName, uName, pWord);
}
Chỉnh sửa: Tôi nghĩ rằng chúng tôi đang nhận được kết nối gộp vì chúng tôi không thấy dấu vết ngăn xếp.