Database 函数式编程和数据库交互的最佳实践是什么?

Database 函数式编程和数据库交互的最佳实践是什么?,database,orm,functional-programming,lisp,crud,Database,Orm,Functional Programming,Lisp,Crud,我知道,在纯面向对象语言(如Java)中,使用诸如Hibernate之类的ORM通常是有意义的。但在Clojure或Common LISP中编写CRUD类型的功能时,我会怎么做 将SQL作为一阶函数传递?但是在HTML生成代码中使用SQL不是很难看吗 谢谢 OlekCommon Lisp不是一种自觉的FP语言。Clojure可以使用Hibernate 对于公共Lisp:。这是一个例子。这是教程的第一部分,它与Hunchentoot一起使用,Hunchentoot是CL Web服务器和动态网页工具

我知道,在纯面向对象语言(如Java)中,使用诸如Hibernate之类的ORM通常是有意义的。但在Clojure或Common LISP中编写CRUD类型的功能时,我会怎么做

将SQL作为一阶函数传递?但是在HTML生成代码中使用SQL不是很难看吗

谢谢


Olek

Common Lisp不是一种自觉的FP语言。Clojure可以使用Hibernate

对于公共Lisp:。这是一个例子。这是教程的第一部分,它与Hunchentoot一起使用,Hunchentoot是CL Web服务器和动态网页工具包。CL中的SQL(看起来比实际更长,因为SQL是水平格式的,而CL不是)。如果您愿意,我们正在开发一个web框架(使用CLSQL和Elephant,已经链接到),该框架旨在实现简洁性,并着眼于arc挑战


编辑:在此基础上进行扩展。

中描述了一组可选的常用Lisp工具,Ur/Web可能很有趣,尽管它不是基于Lisp的:

从他们的网站上引述:

Ur/Web支持构建由SQL数据库支持的动态Web应用程序。标准库的签名使得类型良好的Ur/Web程序在非常广泛的意义上“不会出错”。它们不仅不会在特定页面生成期间崩溃,而且可能不会:

  • 遭受任何类型的代码注入攻击
  • 返回无效的HTML
  • 包含无效的应用程序内部链接
  • HTML表单与其处理程序预期的字段不匹配
  • 包括对远程web服务器提供的“AJAX”式服务做出错误假设的客户端代码
  • 尝试无效的SQL查询
  • 在与SQL数据库或浏览器与web服务器之间的通信中使用不正确的封送或解封

CL-SQL非常好,它展示了面向对象和函数式如何协同工作。