J'essaie de configurer la source de données HikariCP dans la classe Spring @Configuration [Database étant Oracle]. Mais ça ne marche pas.
J'ai cherché sur Internet et j'ai découvert que la source de données HikariCP doit être configurée avec le constructeur. J'ai essayé ceci [la façon dont il est mentionné dans leur page Web github], mais cela ne fonctionne toujours pas. Veuillez m'aider à résoudre ce problème.
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;
}
Vous pouvez consulter notre exemple dans le wiki ici:
https://github.com/brettwooldridge/HikariCP/wiki/Spring-Hibernate-with-Annotations
Comme couvert par cet article:
http://www.3riverdev.com/blog/tutorial-spring-hibernate-hikaricp/
EDIT: Le code fourni ci-dessus est incorrect. Vous essayez d'utiliser les propriétés MySQLDataSource
pour un OracleDataSource
. Et maintenant, vous mélangez une configuration basée sur Driver
avec une configuration basée sur DataSource
. Simplifiez-le:
Pilote:
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;
}
[~ # ~] ou [~ # ~] 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;
}
De plus, la connexion 100 est trop importante pour Oracle, sauf si vous exécutez 20 000 transactions par seconde, 10-20 est plus raisonnable.
Quelque chose comme ce qui suit devrait répondre à vos besoins:
@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);
}