Javaのような純粋なオブジェクト指向言語では、通常、HibernateのようなORMを使用するのが理にかなっていることを私は知っています。しかし、ClojureまたはCommon LISPでCRUDタイプの機能を作成する場合はどうすればよいですか?
SQLを一次関数として渡す?しかし、HTML生成コードにSQLが含まれているのは、非常に醜いことではありませんか?
ありがとう、
オレク
Javaのような純粋なオブジェクト指向言語では、通常、HibernateのようなORMを使用するのが理にかなっていることを私は知っています。しかし、ClojureまたはCommon LISPでCRUDタイプの機能を作成する場合はどうすればよいですか?
SQLを一次関数として渡す?しかし、HTML生成コードにSQLが含まれているのは、非常に醜いことではありませんか?
ありがとう、
オレク
Common Lisp は自己意識的な FP 言語ではありません。Clojure は Hibernate をそのまま使用できます。
Common Lisp の場合:データベース。ここに永続オブジェクト one があります。これは、CL Web サーバーおよび動的 Web ページ ツールキットである Hunchentoot で使用するチュートリアルの最初の部分です。CL の SQL は次のようになります(実際よりも長く見えます。これは、SQL が水平にフォーマットされているのに対し、CL はそうではないためです)。そして、あなたが望むなら、この男はアークの挑戦に目を向けて、ターシティを目指したWebフレームワーク(CLSQLとElephantを使用し、すでにリンクされています)に取り組んでいます。
編集:最近の回答はこれを拡張しています。
Ur/Web は興味深いかもしれませんが、Lisp ベースではありません: http://plv.csail.mit.edu/ur/
彼らのサイトからの引用:
Ur/Web は、SQL データベースに裏打ちされた動的な Web アプリケーションの構築をサポートします。標準ライブラリの特徴は、よく型付けされた Ur/Web プログラムが非常に広い意味で「うまくいかない」ことです。特定のページの生成中にクラッシュしないだけでなく、次のようなこともない可能性があります。
- あらゆる種類のコードインジェクション攻撃に苦しむ
- 無効な HTML を返す
- 無効なアプリケーション内リンクを含む
- HTML フォームとそのハンドラーが期待するフィールドとの間に不一致がある
- リモート Web サーバーが提供する「AJAX」スタイルのサービスについて誤った想定を行うクライアント側コードを含める
- 無効な SQL クエリを試行する
- SQL データベースとの通信、またはブラウザーと Web サーバーとの間の通信で、不適切なマーシャリングまたはアンマーシャリングを使用する
CommonLispツールの代替セットは別の回答で説明されています