Я настраиваю гладкий объект базы данных из конфигурации typesafe следующим образом:
import com.typesafe.config.Config
class DatabaseService(configKey: String, config: Config) {
val driver = slick.driver.MySQLDriver
import driver.api._
val db = Database.forConfig(configKey, config)
}
Объект конфигурации сообщает Slick использовать HikariCP, например:
db {
numThreads = 5
connectionTimeout = 30000
maximumPoolSize = 26
driver = "com.mysql.jdbc.Driver"
url = "jdbc:mysql://localhost:3306/some_db?useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&useSSL=false"
user = "root"
password = "root"
connectionPool = "HikariCP"
}
После создания экземпляра DatabaseService я могу выполнять запросы, запустив dbService.db.run(someQuery)
.
Первый вопрос: нужно ли мне что-то делать, чтобы получить соединение из пула, или это происходит за кулисами, когда я вызываю db.run()
?
Во-вторых, как только этот запрос или запросы будут выполнены, как вернуть текущее соединение с базой данных в пул соединений?