3

Blogging with Noirというブログ投稿を読んだことがありますが、著者がKormaのようなライブラリの代わりにjava.jdbcを使用していることに正直驚きました。ツールにSQLクエリを実行させるのではなく、コードにSQLクエリを記述することの利点は何ですか?

4

3 に答える 3

9

ラッパーを使用するのではなく、Clojureで直接APIを使用することを選択するのは、通常の理由によると思います。

  • 既存の知識:あなたはすでにJDBCをよく知っていて、それが仕事を成し遂げることを知っています。明確な利点がない限り、なぜ新しい抽象化を学ぶのに時間を費やすのですか?
  • 不確実性-ライブラリには必要なすべての機能がありますか?今後も継続して新機能を実装していきますか?
  • 安定性-ラッパーはまだ成熟していない可能性があるため、重大な変更が発生したりバグが発見されたりした場合にコードを変更しなければならないリスクがあります。
  • 完全性-ラッパーは、必要な元のAPIのすべての機能を(まだ)カプセル化していない可能性があります
  • オーバーヘッド-抽象化の余分なレイヤーが、必要のない/望まないパフォーマンスのオーバーヘッドを追加することがあります
  • 追加の依存関係-ビルドを複雑にし、頭の中で保持する必要のある抽象化の数に関して概念的なオーバーヘッドを追加します。

最終的にはトレードオフになります。上記は、基盤となるAPIを使用する理由ですが、ラッパーを使用することを選択する理由も同様にあります。

  • より慣用的な-ラッパーライブラリは、JavaベースのAPIよりもはるかにクリーンでエレガントなコードを提供する可能性があります(特にJava APIが必須/ステートフルである場合)。あなたはコルマがかなりエレガントであることを認めなければなりません!
  • より構成可能-Clojureラッパーは機能的なスタイルを採用する傾向があり、他のClojureコード/ライブラリとの構成が容易になります。
  • 新機能-多くの場合、Clojureラッパーは、元のAPIでは提供されない追加機能を追加します(たとえば、Swing by Seesawに追加されたデータバインディング機能を確認してください)。
于 2012-09-06T08:33:07.337 に答える
7

Korma IMOは、SQLの完全な代替として使用する準備がほぼ整っていません。これは間違いなく便利ですが、現在、私のクエリの多くには(raw "...")スニペットが含まれており、より複雑なものについては、すべての主要なクエリがSQLビュー内で実行され、その後kormaを介して選択されます。

主な代替手段であるClojureQLは、Clojure1.3以降では機能しません。

つまり、SQLを抽象化するのは難しく、Kormaは、最小限に抑えようとしているにもかかわらず、SQLを使用するにはSQLを十分に理解している必要がありますが、まだ完成していません。

于 2012-09-06T08:29:05.093 に答える
3

私は2つの理由について考えることができます:

  1. ほとんど誰もがSQLを知っていますが、ほとんど誰もコルマを知りません
  2. 私自身はKormaを知らないので、これは推測ですが、特定のデータベースにのみ存在する機能など、特定の何かを実行したい場合は、生のSQLが適しているか、必要な場合もあります。
于 2012-09-06T08:27:59.003 に答える