我试图在Spring @Configuration类[Database is oracle]中配置HikariCP数据源。但它没有用。
我在互联网上搜索,发现需要使用构造函数配置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;
}
答案 0 :(得分:22)
您可以在wiki中查看我们的示例:
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;
}
OR DataSource:
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 更合理。
答案 1 :(得分:4)
以下内容应符合您的需求:
@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);
}