Scalaの Slick でDB接続プールを使用する簡単な方法はありますか?
これには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を使用していますが、他のデータベースに簡単に適合させることができます。
完全な例は ここ です(プロジェクトのクローンを作成し、lift /ディレクトリでsbt run
を実行して、プロジェクトが機能することを確認できます)。
完了のために、私はこれについてのブログ投稿を書くことになりました:
http://fernandezpablo85.github.io/2013/04/07/slick_connection_pooling.html
Play 2.4は、本当に見栄えのするHikariCPを使用するようになりました: https://brettwooldridge.github.io/HikariCP/https://www.playframework.com/documentation/2.4.x/SettingsJDBC