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