Search code examples
scalascalaquery

Re-using sessions in ScalaQuery?


I need to do small (but frequent) operations on my database, from one of my api methods. When I try wrapping them into "withSession" each time, I get terrible performance.

db withSession {
  SomeTable.insert(a,b)
}

Running the above example 100 times takes 22 seconds. Running them all in a single session is instantaneous.

Is there a way to re-use the session in subsequent function invocations?


Solution

  • Do you have some type of connection pooling (see JDBC Connection Pooling: Connection Reuse?)? If not you'll be using a new connection for every withSession(...) and that is a very slow approach. See http://groups.google.com/group/scalaquery/browse_thread/thread/9c32a2211aa8cea9 for a description of how to use C3PO with ScalaQuery.

    If you use a managed resource from an application server you'll usually get this for "free", but in stand-alone servers (for example jetty) you'll have to configure this yourself.