我有以下文件作为我的API端点的数据库访问点.在服务器的生命周期内维护单个连接(或连接池?)的正确方法是什么?
(ns my-api.repository
(:require [clojure.java.jdbc :as sql]))
(defn some-query
(sql/with-connection (System/getenv "DATABASE_URL")
(sql/with-query-results results
;; You get the picture
)))
Run Code Online (Sandbox Code Playgroud)
在DATABASE_URL存储,如果你使用with-connection宏单个连接。您可以使用c3p0库作为连接池:
(defn pooled-spec
"return pooled conn spec.
Usage:
(def pooled-db (pooled-spec db-spec))
(with-connection pooled-db ...)"
[{:keys [classname subprotocol subname user password] :as other-spec}]
(let [cpds (doto (ComboPooledDataSource.)
(.setDriverClass classname)
(.setJdbcUrl (str "jdbc:" subprotocol ":" subname))
(.setUser user)
(.setPassword password))]
{:datasource cpds}))
Run Code Online (Sandbox Code Playgroud)