Пул соединений в slick?

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


person Pablo Fernandez    schedule 20.03.2013    source источник
comment
Я предполагаю, что если вы используете его из Play Framework 2.1, вы получаете пул соединений бесплатно. Play Framework использует BoneCP в качестве базовой библиотеки.   -  person EECOLOR    schedule 21.03.2013
comment
Аналогичный вопрос: Библиотека пула соединений Scala?   -  person EECOLOR    schedule 21.03.2013
comment
Я не спрашиваю, есть ли библиотеки объединения в мире JVM. Я спрашиваю о самом простом способе использования (любого) со Slick. Спасибо   -  person Pablo Fernandez    schedule 21.03.2013
comment
Slick требует, чтобы сеанс был доступен. Вы можете получить его из объекта базы данных Database.forDataSource(ds: DataSource). Вы можете использовать методы createSession или withSession из объекта базы данных. Источник данных — это тот, который вы запрашиваете из библиотеки пула.   -  person EECOLOR    schedule 21.03.2013


Ответы (4)


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

person Rogach    schedule 21.03.2013

Для завершения я написал сообщение в блоге об этом:

http://fernandezpablo85.github.io/2013/04/07/slick_connection_pooling.html

person Pablo Fernandez    schedule 07.04.2013
comment
Спасибо, Пабло, эта статья в блоге была очень полезной. - person JMac; 20.07.2013
comment
Любое время! Он был добавлен в slick-examples (github.com/slick/slick-examples) способ - person Pablo Fernandez; 22.07.2013

В Play 2.4 теперь используется HikariCP, который выглядит очень красиво: https://brettwooldridge.github.io/HikariCP/. https://www.playframework.com/documentation/2.4.x/SettingsJDBC

person nemoo    schedule 08.10.2015

Похоже, что более поздняя версия настроенных соединений игрового пула - см. http://www.playframework.com/documentation/2.0.1/SettingsJDBC

person Michael Nash    schedule 22.11.2013