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

时间:2009-02-19 07:41:11

标签: database orm functional-programming lisp crud

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

将SQL作为一阶函数传递?但是,HTML生成代码中的SQL是否非常难看?

谢谢,

Olek

3 个答案:

答案 0 :(得分:3)

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

对于Common Lisp:databases。这是一个persistent object onehere是教程的第一部分,它将它与Hunchentoot,一个CL网络服务器和动态网页工具包一起使用。 CL can look like this中的SQL(看起来比它实际上更长,因为SQL是水平格式化的而CL不是)。如果你愿意的话,this guy正在开发一个网络框架(使用CLSQL和Elephant,已经链接到了),目的是苛刻,并着眼于弧线挑战。

编辑:a recent answer扩展了这一点。

答案 1 :(得分:1)

Ur / Web可能很有趣,虽然它不是基于lisp的:http://plv.csail.mit.edu/ur/

引自他们的网站:

  

Ur / Web支持构建由SQL数据库支持的动态Web应用程序。标准库的签名是这样的,良好类型的Ur / Web程序不会出错"从广义上讲。它们不仅在特定页面生成期间不会崩溃,而且它们也可能不会崩溃:

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

答案 2 :(得分:0)

another answer

中描述了另一组Common Lisp工具