Как настроить источник данных с помощью 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);
}