Проблема в том, что ваш способ подключения к базе данных не всегда будет, хотя JNDI;например, при тестировании или в REPL вы можете захотеть управлять своим собственным пулом соединений.
Я предлагаю вам сохранить вашу спецификацию базы данных как var .Таким образом, единственное изменение в вашем коде - это переименование переменной;поскольку вы намереваетесь перепривязать , обычно используются звездочки:
(def *db-spec* {:name "jndi name"})
(defn query [q]
(sql/with-connection *db-spec*
(sql/with-query-results rs q
(time (vec rs)))))
(query "select * from Students")
А при тестировании на repl просто создайте свой собственный источник данных с помощью, скажем, Commons-DBCP и rebindваши спецификации БД к этому.
(def ds (doto (BasicDataSource.)
(.setDriverClassName "oracle.jdbc.OracleDriver")
(.setUsername "tiger")
(.setPassword "scott")))
(binding [*db-spec* {:datasource ds}]
(query "select * from Students"))