2016-05-24 35 views
0

在我Luminus公司的应用程序中执行多个请求我有这样的:Luminus公司 - 同一个数据库连接

(defn page1 [id] 
    (layout/render "page1.html" 
    {:article (db/get-single-article {:id (Integer/parseInt id)})) 

我想执行相同的数据库连接中有多个不同的请求到数据库。我怎样才能做到这一点?

+0

是否要使用相同的db连接或db事务? –

+0

@PiotrekBzdyl,连接。 –

回答

1

从你的问题,你是否要重复使用相同的数据库连接来处理多个HTTP请求或一个HTTP请求调用使用JDBC API(所以所有的JDBC调用使用相同的数据库连接)多种功能目前还不清楚。

如果是后一种情况下,你可以使用with-db-connection来包装所有的函数调用JDBC API。如果所有SQL操作都应该是一个数据库事务的一部分,您也可以使用with-db-transaction

对于前一种情况,我不知道你为什么会需要重用的多个HTTP请求相同的连接但由于HTTP是无状态的定义,并导致多个问题它不是一个常见的成语。

你可以存储在你的连接,以便ring HTTP session您就随时可以得到与会话相关联的请求,并使用JDBC逻辑拿来。

然而,这样的解决方案如下缺点:

  • ,你必须确保连接被释放到池中(或者,如果你不使用池关闭)不再需要的时候。你会如何检测?如果客户端发生故障,并且决定清理数据库连接时从不完成某个工作流?
  • 多少个并发的会话'你需要处理?如果许多(如数百)保持每个会话的专用连接不会扩展(数据库连接是双方都很昂贵的资源:客户端和服务器)