Как настроить источник данных с помощью Hikaricp в классе Spring @Configuration?

Я пытаюсь настроить источник данных HikariCP в Spring @Configuration class[база данных oracle]. Но это не работает.

Я искал в интернете и обнаружил, что источник данных HikariCP должен быть настроен с помощью конструктора. Я пробовал это [так, как это упоминается на их веб-странице github], но он все еще не работает. Пожалуйста, помогите мне в решении этой проблемы.

private HikariDataSource dataSource() {
    final HikariDataSource ds = new HikariDataSource();
    ds.setMaximumPoolSize(100); 
    ds.setDataSourceClassName("oracle.jdbc.driver.OracleDriver"); 
    ds.addDataSourceProperty("url", "jdbc:oracle:thin:@localhost:1521:XE"); 
    ds.addDataSourceProperty("user", "username");
    ds.addDataSourceProperty("password", "password");
    ds.addDataSourceProperty("cachePrepStmts", true); 
    ds.addDataSourceProperty("prepStmtCacheSize", 250); 
    ds.addDataSourceProperty("prepStmtCacheSqlLimit", 2048); 
    ds.addDataSourceProperty("useServerPrepStmts", true);
    return ds;
} 

2 ответов


вы можете проверить наш пример в вики здесь:

https://github.com/brettwooldridge/HikariCP/wiki/Spring-Hibernate-with-Annotations

в этой статье:

http://www.3riverdev.com/blog/tutorial-spring-hibernate-hikaricp/

изменить: Приведенный выше код неверен. Вы пытаетесь использовать в MySQL DataSource свойства Oracle DataSource. И теперь вы путаете Driverнастройки с DataSource-одна. Упростите его:

водитель:

private HikariDataSource dataSource() {
   final HikariDataSource ds = new HikariDataSource();
   ds.setMaximumPoolSize(100);
   ds.setDriverClassName("oracle.jdbc.driver.OracleDriver"); 
   ds.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:XE"); ;
   ds.setUsername("username");
   ds.setPassword("password");
   return ds;
}

или источник:

private HikariDataSource dataSource() {
   final HikariDataSource ds = new HikariDataSource();
   ds.setMaximumPoolSize(100);
   ds.setDataSourceClassName("oracle.jdbc.pool.OracleDataSource");
   ds.addDataSourceProperty("serverName", "yourServer");
   ds.addDataSourceProperty("port", "1521");
   ds.addDataSourceProperty("databaseName", "XE");
   ds.addDataSourceProperty("user", "username");
   ds.addDataSourceProperty("password", "password");
   return ds;
}

и 100 соединение является большим для Oracle, если вы не используете транзакции 20K в секунду,10-20 более разумно.


что-то вроде следующего должен соответствовать вашим потребностям:

@Bean
public DataSource dataSource() {
     HikariConfig config = new HikariConfig();
     config.setMaximumPoolSize(100);
     config.setDataSourceClassName("oracle.jdbc.pool.OracleDataSource");
     config.addDataSourceProperty("serverName", "localhost");
     config.addDataSourceProperty("port", "1521");
     config.addDataSourceProperty("databaseName", "XE");
     config.addDataSourceProperty("user", "yourUser");
     config.addDataSourceProperty("password", "yourPassword");

     return new HikariDataSource(config);
}