2017-08-07 4 views
1

私のプロジェクトの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によって設定され使用されます。

基本的に、関連するプロパティを実装に送信できます。

Oracleのたとえばあなたは

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

を送ることができ、このプロパティは、プロパティにそれを保存し、ドライバのプロパティにそれをコピーして、接続時にそれを使用するHikariCP Oracle実装で

を使用されます。

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

あなたの答えをありがとう。今私はキャッシングがドライバ用であることを理解し、addDataSourcePropertyを使用してドライバのプロパティを設定できます。しかし、(サンプルコードスニペットがMySQL用であると言ったように)Oracleドライバでキャッシュを有効にするために設定されるデータソースプロパティを見つけることができませんでした。 –

+0

https://stackoverflow.com/questions/12167108/using-oracle-jdbc-driver-implicit-caching-featureを参照してください。 – user7294900