使用Haskell与数据库交互的最佳方法是什么?我习惯使用某种ORM(Django的ORM,hibernate等),类似的东西在使用HAppS创建应用程序时会很好.
编辑:就实际数据库而言,我希望可以自由选择Postgresql MySql和SQLite.
我想到的图书馆不是ORM,但它仍然可以做你想要的.
如果你想要一些能让你的数据库访问安全的东西,同时很好地将东西集成到你的程序中,那么试试HaskellDB.它基本上会查看您的架构,生成一些数据结构,然后为您提供类型安全的查询方式.它已经存在了很长一段时间,社区的意见是它很好而且稳定.
要使用它,您需要一些底层的Haskell DB库,如HSQL.
祝好运!
存在ORM库的原因是C#或Java中的对象与存储在数据库中的对象之间存在相对较大的差异.这在Haskell中不是一个问题,因为:
它没有对象
数据集和Haskell列表都有它们在数学集理论中的灵感,因此它们之间的摩擦力远远小于数据库和对象之间的摩擦力.
持久性使用起来相当不错,并允许您依赖类型推断来确定查询所涉及的表.例如,如果我的"模型"文件中包含以下内容:
User name Text age Int Login user UserId login Text passwd Text
然后我可以这样做:
Just (Entity uid _) <- selectFirst [ UserName ==. "Some User ] [] Just (Entity lid Login {..}) <- selectFirst [ LoginUser ==. uid ] []
它会知道我的意思是哪些表.当然,您可能不希望像这样编写部分代码,但我想强调查询.