如何在Spring @Configuration类中使用HikariCP配置数据源?
问题内容:
我正在尝试在Spring @Configuration类[数据库为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;
}
问题答案:
您可以在Wiki上查看我们的示例:
https://github.com/brettwooldridge/HikariCP/wiki/Spring-Hibernate-with-
Annotations
如本文所述:
http://www.3riverdev.com/blog/tutorial-spring-hibernate-
hikaricp/
编辑:上面提供的代码不正确。您正在尝试对 Oracle 使用 MySQL
DataSource
属性。现在,您将基于配置的配置与基于配置的配置混合在一起。简化一下:
__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;
}
同样,除非您每秒运行20K事务,否则 100 连接对于Oracle来说是一个大方法, 10-20 比较合理。