我的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的基础知识。
如何创建单个会话并使其对所有并发任务保持开放状态?
答案 0 :(得分:1)
会话不应该长时间保持打开状态。话虽这么说,你总是可以手动处理会话。从docs开始,您可以使用以下方式打开会话:
val session : Session = db.createSession
...run the queries normally...
session.close // close the session
但是,我永远不会使用像那样危险的东西。迟早会有一个错误,会话将会逃脱(即你会忘记关闭它)让你的数据库暂停。