首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ScalaQuery中重用会话?

在ScalaQuery中重用会话?
EN

Stack Overflow用户
提问于 2012-04-30 13:21:11
回答 2查看 612关注 0票数 2

我需要从我的一个api方法对我的数据库执行小的(但频繁的)操作。当我每次尝试将它们包装成"withSession“时,我得到了糟糕的性能。

代码语言:javascript
复制
db withSession {
  SomeTable.insert(a,b)
}

运行上面的示例100次需要22秒。在一个单独的会话中运行它们是瞬间的。

有没有办法在后续的函数调用中重用会话?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-30 14:08:12

您是否有某种类型的连接池(请参阅JDBC Connection Pooling: Connection Reuse?)?否则,您将为每个withSession(...)使用一个新连接这是一种非常缓慢的方法。有关如何将C3PO与ScalaQuery一起使用的说明,请参阅http://groups.google.com/group/scalaquery/browse_thread/thread/9c32a2211aa8cea9

如果您使用来自应用程序服务器的托管资源,您通常会“免费”获得此资源,但在独立服务器(例如jetty)中,您必须自己配置此资源。

票数 3
EN

Stack Overflow用户

发布于 2012-04-30 13:58:41

我可能说得太明显了,但您可以在withSession块中放入更多调用,如下所示:

代码语言:javascript
复制
db withSession {
  SomeTable.insert(a,b)
  SomeOtherTable.insert(a,b)
} 

或者,您可以创建一个隐式会话,执行您的业务,然后在完成后关闭它:

代码语言:javascript
复制
implicit val session = db.createSession
SomeTable.insert(a,b)
SomeOtherTable.insert(a,b)
session.close
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10378849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档