nov*_*von 5 scala hikaricp slick-3.0
我正在从typesafe配置中设置一个光滑的Database对象,如下所示:
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)
}
Run Code Online (Sandbox Code Playgroud)
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"
}
Run Code Online (Sandbox Code Playgroud)
实例化DatabaseService之后,我可以通过运行来运行查询dbService.db.run(someQuery)。
第一个问题是我需要做一些事情以从池中获得连接,还是在调用时在幕后发生db.run()?
其次,一旦执行了一个或多个查询,如何将当前数据库连接返回到连接池?
第一个问题是我需要做些什么来从池中获得连接,还是在调用db.run()时在后台发生?
那是在幕后发生的。
其次,一旦执行了一个或多个查询,如何将当前数据库连接返回到连接池?
那也发生在幕后。
这是两个问题的相关代码。基本上,是获取一个会话,执行给定的操作(在您的情况下为someQuery),然后释放该会话(将其关闭)。挖多一点的代码,你可以看到,JDBC实现创建一个BaseSession其持有的连接,并关闭调用它的关闭方法。
另外,从docs:
数据库连接和事务由Slick自动管理。默认情况下,连接是按需获取和释放的,并在自动提交模式下使用。
| 归档时间: |
|
| 查看次数: |
2117 次 |
| 最近记录: |