Scala 在Slick 3.0.0中与Play框架一起使用连接池的最佳实践

Scala 在Slick 3.0.0中与Play框架一起使用连接池的最佳实践,scala,playframework-2.0,slick,hikaricp,Scala,Playframework 2.0,Slick,Hikaricp,我遵循了Slick 3.0.0-RC1的设计,使用Typesafe配置作为数据库连接配置。这是我的配置文件: database = { driver = "org.postgresql.Driver" url = "jdbc:postgresql://localhost:5432/postgre" user = "postgre" } 我将文件Locale.scala建立为: package models import slick.driver.PostgresDriver.ap

我遵循了Slick 3.0.0-RC1的设计,使用Typesafe配置作为数据库连接配置。这是我的配置文件:

database = {
  driver = "org.postgresql.Driver"
  url = "jdbc:postgresql://localhost:5432/postgre"
  user = "postgre"
}
我将文件
Locale.scala
建立为:

package models

import slick.driver.PostgresDriver.api._
import scala.concurrent.Future

case class Locale(id: String, name: String)

class Locales(tag: Tag) extends Table[Locale](tag, "LOCALES") {
  def id = column[String]("ID", O.PrimaryKey)
  def name = column[String]("NAME")

  def * = (id, name) <> (Locale.tupled, Locale.unapply)
}

object Locales {
  private val locales = TableQuery[Locales]

  val db = Database.forConfig("database")

  def count: Future[Int] =
    try db.run(locales.length.result)
    finally db.close
}

如果我像这样创建
db
,那么数据库对象将和我的模型一样多。那么,实现这项工作的最佳实践是什么呢?

您可以创建一个对象DBLocator,并使用lazy操作符加载它,以便只根据需要加载它

您始终可以调用DBLocator类中定义的方法来获取会话实例

val db = Database.forConfig("database")