Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Connection pooling in slick?

Tags:

scala

slick

Is there an easy way to use a DB connection pool with scala's Slick?

like image 637
Pablo Fernandez Avatar asked Mar 20 '13 21:03

Pablo Fernandez


2 Answers

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).

like image 183
Rogach Avatar answered Oct 13 '22 22:10

Rogach


For completion I ended up writing a blog post about this:

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

like image 44
Pablo Fernandez Avatar answered Oct 13 '22 22:10

Pablo Fernandez