2011-08-04 32 views
7

Tôi vừa bắt đầu sử dụng BoneCP và đây là lần đầu tiên tôi sử dụng hồ bơi kết nối. Tôi hơi bối rối về cách tôi phải sử dụng nó. Hiện tại tôi đang lưu đối tượng BoneCP như là một biến tĩnh và do đó tôi có thể sử dụng nó giữa các kết nối khác nhau.Sử dụng BoneCP: Xử lý các kết nối từ hồ bơi

Khi tôi hoàn tất kết nối, tôi đóng nó bằng connection.close().
Tôi có nên thực hiện việc này hay không nên đóng nó để cho phép nó được sử dụng lại bên hồ bơi?

Đây là thực hiện hiện tại của tôi để có được một kết nối:

private static BoneCP connectionPool; 

public Connection getConnection() throws SQLException { 
    if (connectionPool == null) { 
     initPool(); 
    } 
    return connectionPool.getConnection(); 
} 

private void initPool() throws SQLException { 
    BoneCPConfig config = new BoneCPConfig(); 
    config.setJdbcUrl(DB_URL); 
    config.setUsername(DB_USERNAME); 
    config.setPassword(DB_PASSWORD); 
    config.setMinConnectionsPerPartition(5); 
    config.setMaxConnectionsPerPartition(10); 
    config.setPartitionCount(1); 
    connectionPool = new BoneCP(config); 
} 

Điều này có vẻ đúng hay tôi đã hiểu lầm như thế nào tôi được phép sử dụng BoneCP?

Trả lời

9

Khác với việc tạo kết quả tĩnh riêng tư của bạn và thay đổi init thành một khối tĩnh (hoặc luân phiên làm cho getConnection của bạn được đồng bộ hóa), bạn ổn.

Bạn đúng là bạn PHẢI thực hiện connection.close() để quay lại hồ bơi. Khi ứng dụng của bạn tắt, hãy tắt hồ bơi kết nối

Các vấn đề liên quan