Esiste un modo semplice per utilizzare un pool di connessione DB con scala Slick?Il pool di connessioni nella chiazza di petrolio?
risposta
Io uso Apache Commons DBCP
per questo. In sostanza, è sufficiente creare un DataSource
, che incapsula i dettagli pooling, e passa che DataSource
a 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)
Questo esempio utilizza HSQLDB, ma può essere facilmente adattato a qualsiasi altro database.
L'esempio completo è here (è possibile clonare il progetto ed eseguire sbt run
nella directory di sollevamento/per vederlo funzionante).
Per il completamento ho finito per scrivere un post su questo:
http://fernandezpablo85.github.io/2013/04/07/slick_connection_pooling.html
Grazie Pablo, quell'articolo del blog è stato molto utile. – JMac
In qualsiasi momento! A proposito, ha contribuito a esempi slick (https://github.com/slick/slick-examples) –
Sembra come se la versione successiva di connessioni configurate dello stagno del gioco - vedere http://www.playframework.com/documentation/2.0.1/SettingsJDBC
Gioca 2.4 ora usa HikariCP che sembra davvero bello: https://brettwooldridge.github.io/HikariCP/ https://www.playframework.com/documentation/2.4.x/SettingsJDBC
La mia ipotesi è che se la usi dall'interno del Play Frame lavoro 2.1 ottieni il pool di connessioni gratis. Play Framework utilizza [BoneCP] (http://jolbox.com/) come libreria sottostante – EECOLOR
Non sto giocando. Grazie –
Domanda simile: [Scala pool di pool di connessione?] (Http://stackoverflow.com/questions/5080707/scala-connection-pool-library) – EECOLOR