2014-10-06 65 views
7

是否有人會詳細說明HikariCP如何處理連接池中的連接?你如何在游泳池中放置一個新的連接,以及如何在以後調用/檢索它?如何創建新的連接並稍後在HikariCP中檢索它們

這是我當前的代碼:

HikariConfig config = new HikariConfig(); 
    config.setMaximumPoolSize(100); 

    config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); 
    config.addDataSourceProperty("serverName", "localhost"); 
    config.addDataSourceProperty("port", "8889"); 
    config.addDataSourceProperty("databaseName", "XXX"); 
    config.addDataSourceProperty("user", "XXX"); 
    config.addDataSourceProperty("password", "XXX"); 

    System.out.print("qq"); 

    HikariDataSource ds = new HikariDataSource(config); 
    ds.setConnectionTimeout(800); 

回答

11

擁有游泳池,你不添加到連接池的再取回。你做的確相反:當你需要一個連接池時,你可以從連接池中獲得一個連接,當你完成連接並將其連接回池時關閉連接。正如其名稱所示,HikariDataSource是一個DataSource。 DataSource是您從中獲得連接的對象。

池爲您處理連接的打開。如果沒有自動連接可用,它將使您進入等待隊列等。

根據池的屬性,池可以立即打開連接或按需打開連接,始終打開一定數量的連接,縮小未使用的時候一定量後池的大小,等等

這一切都非常有據可查:https://github.com/brettwooldridge/HikariCP#user-content-configuration-knobs-baby

示例代碼(Java 7和更高版本):

try (Connection connection = ds.getConnection()) { 
    // use the connection 
} 

示例代碼(Java 7的前):

Connection connection = ds.getConnection(); 
try { 
    // use the connection 
} 
finally { 
    connection.close(); 
} 
+0

謝謝。我已經閱讀過,但我相信我需要一些代碼才能完全理解它。你有任何示例代碼顯示它在使用嗎? – miniHessel 2014-10-07 06:04:17

+0

您可以像使用任何其他DataSource一樣使用HikariDataSource:調用DataSource上的'getConnection()'來獲得連接,然後使用此連接,然後在完成連接時調用'connection.close()'。這是標準的JDBC。 – 2014-10-07 06:13:43

+0

好的,謝謝。所以,即使您稍後使用連接,您應該寫close(),然後再getConnection? – miniHessel 2014-10-07 07:54:18

相關問題