Clojureのデータベースを使用する方法は何ですか?
Clojureから、Javaでできることは何でもできることを知っていますが、それは、Clojureの単純さと衝突する過度に複雑なもの(Hibernateなど)を使用してしまう可能性があることを意味します。推奨事項やコメントはありますか?
clojure-contribには、JDBC(java.sql.DriverManager)のシンラッパーであるSQLライブラリがあります。付属のテストファイルには、その使用例がいくつかあります。
私は今(2011年後半の時点で)Kormaをお勧めします-「ClojureのおいしいSQL」
これは美しい小さな SQL DSL です。Web サイトの例を次に示します。
(select users
(aggregate (count :*) :cnt)
(where (or (> :visits 20)
(< :last_login a-year-ago))))
Java ライブラリの使用にオープンであるが、単純さを取り入れたものが必要な場合は、おそらくPersistを気に入るはずです。わずか 10 分で、ニーズに合っているかどうかを確認できます。
Clojureの単純なキー/値データベースにBerkeleyDBを使用しました。ここを参照してください。
リレーショナル代数を取り入れたClojureQLがあります。
最近では、Datomicや、非常に興味深いリレーショナル (SQL 以外の!) データベース機能用のDataScriptなどの多くの同様のソリューションもあります。
永続的な接続や複数のデータベースへの接続が必要で、頻繁に接続を再確立したくない場合は、DB 接続プールを使用することをお勧めします。BoneCP や Tomcat CP のようなもの。
これらのパッケージから DataSource を (clojure.contrib.sql/with-connection ...) に提供できます。
次に、SQLLite があります。この簡単な例を見てください: https://github.com/ogrim/clojure-sqlite-example