用于数据库抽象的惯用haskell

前端之家收集整理的这篇文章主要介绍了用于数据库抽象的惯用haskell前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在OOP语言中,我可能会编写一个数据库包装器,它封装数据库连接,管理模式并提供一些核心操作,例如exec,query,prepare_and_execute.我甚至可能有一个单独的数据库助手类来处理数据库模式,只留下数据库抽象来处理连接.然后,模型包装器/工厂将使用它,它使用数据库抽象类来创建模型类的实例.像这个UML图一样的东西:

在惯用的haskell中设计这样一个系统的首选方法是什么?

解决方法

Haskell中最常用的数据库抽象库是 HDBC.这意味着查询只是表示为带有占位符的字符串.更少的人使用 HaskellDB,它提供了一种类型安全的方法来构建查询.没有什么禁止用户数据类型来表示常见查询自定义函数来构建它们.

Haskell中的值是不可变的,这意味着使可变对象与数据库中的记录相对应是没有用的.相反,我认为更常见的是定义用户数据类型和函数,这些类型和函数可以对这些类型的数据进行编组和推送/拉取.

每当需要更新数据库时,它们很可能在IO下的某些有状态monad中运行.例如,这将允许保持连接打开,或者在请求之间执行某些操作.

最后,函数是第一类的,因此可以动态构造所有函数.因此,函数本身可以封装您想要的任何信息.

所以,我认为,通常的Haskell方法包括

>代表实际数据的代数数据类型(作为不可变值)>转换这些值的应用程序的其余部分>生成查询函数(封装模式详细信息,将数据封送到Haskell数据类型/从Haskell数据类型封送数据)>(可选)运行查询的有状态monad(隐藏数据库访问的详细信息)>运行查询函数(隐藏数据库访问的详细信息)

原文链接:https://www.f2er.com/mssql/78520.html

猜你在找的MsSQL相关文章