如何在Spring @Configuration类中使用HikariCP配置数据源?

Abh*_*rar 14 spring jdbc spring-mvc hikaricp

我正在尝试在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;
} 
Run Code Online (Sandbox Code Playgroud)

bre*_*ttw 24

你可以在这里查看我们在wiki中的示例:

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

如本文所述:

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

编辑:上面提供的代码不正确.您正在尝试使用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;
}
Run Code Online (Sandbox Code Playgroud)

数据源:

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;
}
Run Code Online (Sandbox Code Playgroud)

此外,除非您每秒运行20K事务,否则100连接对Oracle来说很重要,10-20更合理.


geo*_*and 5

类似以下的内容应该适合您的需求:

@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);
}
Run Code Online (Sandbox Code Playgroud)