Tôi không nghĩ rằng kết nối có bất kỳ thứ gì đang mở. Tài liệu cũng như nguồn không đề xuất nó và trong 2.3 tôi đã có thể xác nhận nó bằng cách kiểm tra db sau khi chạy truy vấn. Nguồn trông giống như sau:
(defn with-connection*
"Evaluates func in the context of a new connection to a database then
closes the connection."
[db-spec func]
(with-open [^java.sql.Connection con (get-connection db-spec)]
(binding [*db* (assoc *db* :connection con :level 0 :rollback (atom false))]
(func))))
Kết nối tổng hợp có thể hữu ích trong việc tạo ra chúng một cách lười biếng nhưng không giữ chúng mở. Việc đặt kết nối có thể là cần thiết. Tuy nhiên, API mới nhất nhấn mạnh việc tạo kết nối và chuyển nó vào mỗi cuộc gọi. Trong khi vẫn còn ALPHA, điều này trông giống như tương lai cho thư viện này (và vẫn tương thích với kết nối tổng hợp). Từ wiki của thư viện:
(require '[clojure.java.jdbc :as j]
'[clojure.java.jdbc.sql :as s])
(def mysql-db {:subprotocol "mysql"
:subname "//127.0.0.1:3306/clojure_test"
:user "clojure_test"
:password "clojure_test"})
(j/insert! mysql-db :fruit
{:name "Apple" :appearance "rosy" :cost 24}
{:name "Orange" :appearance "round" :cost 49})