有没有一种简单的方法可以使用带有 scala 的Slick的数据库连接池?
问问题
12350 次
4 回答
28
我用Apache Commons DBCP
这个。基本上,您只需创建一个DataSource
, 封装池化详细信息,然后将其传递DataSource
给 Slick:
import org.apache.commons.dbcp.BasicDataSource
val dataSource: DataSource = {
val ds = new BasicDataSource
ds.setDriverClassName("org.hsqldb.jdbc.JDBCDriver")
ds.setUsername("SA")
ds.setPassword("")
ds.setMaxActive(20);
ds.setMaxIdle(10);
ds.setInitialSize(10);
ds.setValidationQuery("SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS")
new java.io.File("target").mkdirs // ensure that folder for database exists
ds.setUrl("jdbc:hsqldb:file:target/db/db")
ds
}
// test the data source validity
dataSource.getConnection().close()
// get the Slick database that uses the pooled connection
val database = Database.forDataSource(dataSource)
此示例使用 HSQLDB,但可以轻松适应任何其他数据库。
完整的例子在这里(你可以克隆项目,并sbt run
在 lift/ 目录中运行以查看它的工作)。
于 2013-03-21T17:06:20.597 回答
22
为了完成,我最终写了一篇关于此的博客文章:
http://fernandezpablo85.github.io/2013/04/07/slick_connection_pooling.html
于 2013-04-07T21:45:56.510 回答
1
Play 2.4 现在使用看起来非常不错的 HikariCP: https ://brettwooldridge.github.io/HikariCP/ https://www.playframework.com/documentation/2.4.x/SettingsJDBC
于 2015-10-08T21:06:52.147 回答
-1
似乎更高版本的播放池配置了连接 - 请参阅http://www.playframework.com/documentation/2.0.1/SettingsJDBC
于 2013-11-22T20:19:51.857 回答