光滑创建一个新会话并保持打开状态

时间:2014-12-18 16:54:59

标签: oracle scala session akka slick

我的scala应用程序适用于具有活动会话限制的Oracle数据库。 我通过Typesafe Slick使用AKKA actor与Oracle DB进行并发任务。

这是演员的工作示例:

def marketPlaceDataRefresh[T](targetArea:String, customerId:String, wave:String) =    
  clientPool.withClient(targetArea.toUpperCase) {
    implicit session =>
      sql"""BEGIN MARKETPLACE_PKG.INIT_DATA_REFRESH($customerId,$wave,$wave,$wave); COMMIT; END;""".as[Int].firstOption
  }

每次当AKKA演员调用def marketPlaceDataRefresh时,隐式会话开启和关闭。

我只知道并发和Slick的基础知识。

如何创建单个会话并使其对所有并发任务保持开放状态?

1 个答案:

答案 0 :(得分:1)

会话不应该长时间保持打开状态。话虽这么说,你总是可以手动处理会话。从docs开始,您可以使用以下方式打开会话:

val session : Session = db.createSession
...run the queries normally...
session.close // close the session

但是,我永远不会使用像那样危险的东西。迟早会有一个错误,会话将会逃脱(即你会忘记关闭它)让你的数据库暂停。

相关问题