在我的Luminus应用程序中,我有这个:
(defn page1 [id]
(layout/render "page1.html"
{:article (db/get-single-article {:id (Integer/parseInt id)}))
我想在同一个数据库连接中对数据库执行多个不同的请求。我怎么能这样做?
答案 0 :(得分:1)
从您的问题不清楚是否要重用相同的数据库连接来处理多个HTTP请求或使用JDBC API调用多个函数的单个HTTP请求(因此所有这些JDBC调用都使用相同的数据库连接)。
如果是后一种情况,您可以使用with-db-connection
来包装调用JDBC API的所有函数。如果所有SQL操作都应该是一个数据库事务的一部分,也可以使用with-db-transaction
。
对于前一种情况,我不确定为什么你需要为多个HTTP请求重用相同的连接,但它不是一个常见的习惯用法,因为HTTP根据定义是无状态的并且会导致多个问题。
您可以将连接存储在ring HTTP session中,这样只要获得与会话关联的请求并用于JDBC逻辑,就可以获取连接。
然而,这种解决方案有以下缺点: