Подтвердить что ты не робот

Соединение пул в slick?

Есть ли простой способ использовать пул соединений с БД с scala Slick?

4b9b3361

Ответ 1

Я использую 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 в лифте/каталоге, чтобы увидеть его работу).