Oracle HikariCP准备语句缓存

Oracle HikariCP准备语句缓存,oracle,caching,hikaricp,connection-pool,Oracle,Caching,Hikaricp,Connection Pool,我正在研究HikariCP在我的一个项目中使用它。github中项目页面的另一个部分表示,它不支持连接池级别的预处理语句缓存 但是有下面的代码片段 HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons"); config.setUsername("bart"); config.setPassword("51mp50n"); config.addDataSo

我正在研究HikariCP在我的一个项目中使用它。github中项目页面的另一个部分表示,它不支持连接池级别的预处理语句缓存

但是有下面的代码片段

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方法支持哪些属性?

在您的案例中,MySql配置并使用了数据源

基本上,您可以向实现发送相关属性

例如,对于oracle,您可以发送

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);
for(条目:properties.entrySet()){
driverProperties.setProperty(entry.getKey().toString(),entry.getValue().toString());
}
....
connect(jdbcUrl、driverProperties);

缓存由驱动程序提供。感谢您的回答。现在我明白了缓存是为驱动程序设计的,我们可以使用addDataSourceProperty设置驱动程序属性。但是我找不到要为在oracle驱动程序中启用缓存而设置的数据源属性(正如您所说的示例代码片段是针对MySQL的)