是否有一种简单的方法可以将数据库连接池与scala Slick一起使用?
答案 0 :(得分:26)
我使用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,但可以轻松地适应任何其他数据库。
完整的示例是here(您可以克隆项目,并在lift /目录中运行sbt run
以查看它是否正常工作。)
答案 1 :(得分:21)
为了完成,我最后写了一篇关于此的博文:
http://fernandezpablo85.github.io/2013/04/07/slick_connection_pooling.html
答案 2 :(得分:1)
Play 2.4现在使用的HikariCP看起来非常不错:
mb_detect_order
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets
答案 3 :(得分:-1)
好像播放池的更高版本配置了连接 - 请参阅http://www.playframework.com/documentation/2.0.1/SettingsJDBC