Is there an easy way to use a DB connection pool with scala's Slick?
I use Apache Commons DBCP
for this. Basically, you simply create a DataSource
, that encapsulates the pooling details, and pass that DataSource
to 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)
This example uses HSQLDB, but can be easily adapted to any other database.
Full example is here (you can clone the project, and run sbt run
in lift/ directory to see it working).
For completion I ended up writing a blog post about this:
http://fernandezpablo85.github.io/2013/04/07/slick_connection_pooling.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With