2017-08-07 72 views
1

我正在研究HikariCP在我的一個項目中使用它。 github中的項目頁面的statement cache section表示它不支持連接池級別的預準備語句緩存。HikariCP準備了語句緩存

initialization section具有下面的代碼片斷

HikariConfig config = new HikariConfig(); 
config.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons"); 
config.setUsername("bart"); 
config.setPassword("51mp50n"); 
config.addDataSourceProperty("cachePrepStmts", "true"); 
config.addDataSourceProperty("prepStmtCacheSize", "250"); 
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); 

HikariDataSource ds = new HikariDataSource(config); 

,並將它設置預處理語句緩存配置。它是爲下面的連接池或驅動程序配置的嗎? addDataSourceProperty方法支持哪些屬性?

+0

緩存由驅動程序提供。 – brettw

回答

1

數據源由MySql配置並在您的情況下使用。

基本上,您可以將相關屬性發送到您的實施。

例如,對於甲骨文可以發送

dataSource.addDataSourceProperty("oracle.jdbc.defaultNChar", "true"); 

而這個屬性將在Oracle實施使用

HikariCP其保存在屬性,並將其複製到驅動程序屬性,並將其用於連接:

for (Entry<Object, Object> entry : properties.entrySet()) { 
     driverProperties.setProperty(entry.getKey().toString(), entry.getValue().toString()); 
     } 
.... 
driver.connect(jdbcUrl, driverProperties); 
+0

感謝您的回答。現在我明白緩存是用於驅動程序的,我們可以使用addDataSourceProperty設置驅動程序屬性。但是我找不到要在oracle驅動程序中啓用緩存的數據源屬性(正如您所說的示例代碼片段針對MySQL)。 –

+0

請參閱https://stackoverflow.com/questions/12167108/using-oracle-jdbc-driver-implicit-caching-feature – user7294900