2017-08-07 73 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