(refs #1297)Allow to configure HikariCP in database.conf

This commit is contained in:
Naoki Takezoe
2016-09-19 23:13:52 +09:00
parent 78df2accfc
commit 2ca20af502
2 changed files with 27 additions and 6 deletions

View File

@@ -52,6 +52,13 @@ object Database {
config.setJdbcUrl(DatabaseConfig.url) config.setJdbcUrl(DatabaseConfig.url)
config.setUsername(DatabaseConfig.user) config.setUsername(DatabaseConfig.user)
config.setPassword(DatabaseConfig.password) config.setPassword(DatabaseConfig.password)
config.setAutoCommit(false)
DatabaseConfig.connectionTimeout.foreach(config.setConnectionTimeout)
DatabaseConfig.idleTimeout.foreach(config.setIdleTimeout)
DatabaseConfig.maxLifetime.foreach(config.setMaxLifetime)
DatabaseConfig.minimumIdle.foreach(config.setMinimumIdle)
DatabaseConfig.maximumPoolSize.foreach(config.setMaximumPoolSize)
logger.debug("load database connection pool") logger.debug("load database connection pool")
new HikariDataSource(config) new HikariDataSource(config)
} }

View File

@@ -17,6 +17,11 @@ object DatabaseConfig {
| url = "jdbc:h2:${DatabaseHome};MVCC=true" | url = "jdbc:h2:${DatabaseHome};MVCC=true"
| user = "sa" | user = "sa"
| password = "sa" | password = "sa"
|# connectionTimeout = 30000
|# idleTimeout = 600000
|# maxLifetime = 1800000
|# minimumIdle = 10
|# maximumPoolSize = 10
|} |}
|""".stripMargin, "UTF-8") |""".stripMargin, "UTF-8")
} }
@@ -28,12 +33,21 @@ object DatabaseConfig {
def url(directory: Option[String]): String = def url(directory: Option[String]): String =
dbUrl.replace("${DatabaseHome}", directory.getOrElse(DatabaseHome)) dbUrl.replace("${DatabaseHome}", directory.getOrElse(DatabaseHome))
lazy val url: String = url(None) lazy val url : String = url(None)
lazy val user: String = config.getString("db.user") lazy val user : String = config.getString("db.user")
lazy val password: String = config.getString("db.password") lazy val password : String = config.getString("db.password")
lazy val jdbcDriver: String = DatabaseType(url).jdbcDriver lazy val jdbcDriver : String = DatabaseType(url).jdbcDriver
lazy val slickDriver: slick.driver.JdbcProfile = DatabaseType(url).slickDriver lazy val slickDriver : slick.driver.JdbcProfile = DatabaseType(url).slickDriver
lazy val liquiDriver: AbstractJdbcDatabase = DatabaseType(url).liquiDriver lazy val liquiDriver : AbstractJdbcDatabase = DatabaseType(url).liquiDriver
lazy val connectionTimeout : Option[Long] = getOptionValue("db.connectionTimeout", config.getLong)
lazy val idleTimeout : Option[Long] = getOptionValue("db.idleTimeout" , config.getLong)
lazy val maxLifetime : Option[Long] = getOptionValue("db.maxLifetime" , config.getLong)
lazy val minimumIdle : Option[Int] = getOptionValue("db.minimumIdle" , config.getInt)
lazy val maximumPoolSize : Option[Int] = getOptionValue("db.maximumPoolSize" , config.getInt)
private def getOptionValue[T](path: String, f: String => T): Option[T] = {
if(config.hasPath(path)) None else Some(f(path))
}
} }