29

有没有一种简单的方法可以使用带有 scala 的Slick的数据库连接池?

4

4 回答 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 回答