with-connection が何かを開いているとは思いません。ドキュメントもソースもそれを示唆していません.2.3では、クエリを実行した後にdbを調べることで確認できました。ソースは次のようになります。
(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))))
接続プーリングは、それらを遅延して作成するのに役立つ場合がありますが、それはそれらを開いたままにしません。接続を設定可能にする必要がありそうです。ただし、最新の API では、接続を作成して各呼び出しに渡すだけに重点が置かれています。まだアルファ版ですが、これはこのライブラリの将来のように見えます (そして接続プーリングとの互換性はまだあります)。図書館のウィキから:
(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})