5

我正在研究 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 方法还支持哪些属性?

4

1 回答 1

1

在您的情况下,数据源由 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);
于 2017-08-07T12:23:28.453 回答