Scala slick中的连接池?

Scala slick中的连接池?,scala,slick,Scala,Slick,有没有一种简单的方法可以将DB连接池与scala一起使用?为此,我使用了Apache Commons DBCP。基本上,您只需创建一个数据源,它封装了池的详细信息,并将该数据源传递给Slick: import org.apache.commons.dbcp.BasicDataSource val dataSource: DataSource = { val ds = new BasicDataSource ds.setDriverClassName("org.hsqldb.jdbc.J

有没有一种简单的方法可以将DB连接池与scala一起使用?

为此,我使用了
Apache Commons DBCP
。基本上,您只需创建一个
数据源
,它封装了池的详细信息,并将该
数据源
传递给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,但可以轻松地适应任何其他数据库


完整的示例是(您可以克隆项目,并在lift/目录中运行
sbt run
,以查看它是否正常工作)。

为了完成此任务,我最后写了一篇博客文章:


似乎播放池配置连接的更高版本-请参阅播放2.4现在使用了HikariCP,它看起来非常漂亮:

我的猜测是,如果您在Play Framework 2.1中使用它,您可以免费获得连接池。Play Framework将其用作底层库类似的问题:我不是在问JVM世界中是否存在池库。我想问的是最简单的使用(任何)光滑的方法。ThanksSlick需要一个可用的会话。您可以从数据库对象
database.forDataSource(ds:DataSource)
中获取一个。您可以使用数据库对象中的
createSession
withSession
方法。数据源是您从池库请求的数据源。谢谢Pablo,那篇博客文章非常有用。随时都可以!顺便说一句,这是对光滑示例()的贡献