Tôi có đoạn mã sau:Làm thế nào để tái sử dụng cùng một kết nối với JdbcTemplate của Spring?
@Test
public void springTest() throws SQLException{
//Connect to the DB.
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.h2.Driver");
dataSource.setUrl("jdbc:h2:/data/h2/testa");
dataSource.setUsername("");
dataSource.setPassword("");
JdbcTemplate jt=new JdbcTemplate(dataSource);
jt.execute("SELECT 1");
jt.execute("SELECT 1");
}
Tôi hy vọng hai thực hiện() dòng để tái sử dụng cùng một kết nối. Tuy nhiên, dữ liệu ghi nhận nói:
2011-02-10 12:24:17 DriverManagerDataSource [INFO] Loaded JDBC driver: org.h2.Driver 2011-02-10 12:24:17 JdbcTemplate [DEBUG] Executing SQL statement [SELECT 1] 2011-02-10 12:24:17 DataSourceUtils [DEBUG] Fetching JDBC Connection from DataSource 2011-02-10 12:24:17 DriverManagerDataSource [DEBUG] Creating new JDBC DriverManager Connection to [jdbc:h2:/data/h2/testa] 2011-02-10 12:24:17 DataSourceUtils [DEBUG] Returning JDBC Connection to DataSource 2011-02-10 12:24:17 JdbcTemplate [DEBUG] Executing SQL statement [SELECT 1] 2011-02-10 12:24:17 DataSourceUtils [DEBUG] Fetching JDBC Connection from DataSource 2011-02-10 12:24:17 DriverManagerDataSource [DEBUG] Creating new JDBC DriverManager Connection to [jdbc:h2:/data/h2/testa] 2011-02-10 12:24:17 DataSourceUtils [DEBUG] Returning JDBC Connection to DataSource
Ví dụ trên chạy khá nhanh nhưng tôi có một mảnh lớn của mã nào về cơ bản là điều tương tự và bị treo trong một thời gian dài trên Creating new JDBC DriverManager Connection
. Tôi không bao giờ gặp lỗi nhưng nó làm cho mã chạy rất chậm. Tôi có thể bằng cách nào đó refactor mã trên để chỉ sử dụng cùng một kết nối?
Cảm ơn
Đó là một thay đổi dễ dàng và dường như nó đã hoạt động. Nó có an toàn không? – User1
Đó là chủ đề an toàn, bởi vì đây là những gì một hồ bơi kết nối là tất cả về. :) Tôi cũng sử dụng nó trong các trường hợp thử nghiệm của mình, cho phép tôi tạo ra 'dataSource' thay vì lập trình nó. – limc
Wow mã lớn của tôi chỉ nhanh hơn 100 lần! – User1