何时使用Mapper或Record in Lift?

时间:2011-07-03 17:19:45

标签: web-applications scala lift

我想了解选择使用Record,{{用例优势不便的内容在Mapper应用程序中使用3}}甚至两者。

当我尝试:

时出现了这个问题
  • 为模型类创建类似树的结构
  • 创建一个类似树的结构,用于在页面中呈现类
  • 确保树中的不同类可以同时处于不同的状态。一个处于EDIT或CREATE状态,另一个处于VISUALIZE状态。
  • 可以创建,读取或保存模型类到已经运行的RESTful Web服务。

我将这些用例仅用于记录。你可以用更一般的方式回答。

2 个答案:

答案 0 :(得分:16)

在升降机升降之前,Mapper一直是Lift的一部分。它是数据库和Scala之间简单的“Active Record”风格桥梁。我根据这里概述的想法构建了Mapper: http://web.archive.org/web/20070303054927/http://blog.lostlake.org/index.php?/archives/19-Keeping-the-meaning-with-the-bytes.html

Mapper与JDBC以及关系数据库密切相关。 Mapper有一个合理的机制来构建简单的查询,但对于复杂的东西,人们必须手写SQL。

Mapper虽然坚固但很苛刻。

Record是后备存储和Scala之间更通用的抽象。它在“用字节保持意义”中概述的思想实施较弱......而且很少有人注意或关心。

有MongoDB,CouchDB,Squeryl和其他存储机制的Record实现。写一个新的后端是几天的工作。

记录有很多“异常”,每个后端都有自己的怪癖。目前的唱片所有者已开始批量重构Record。

除非你使用MongoDB后端,否则我认为Record或Mapper不会给你“开箱即用”的树状结构,在这种情况下,你的树结构将基于JSON文档而不是关系。

答案 1 :(得分:2)

嗯,Mapper和Record库只是Lift应用程序中数据库访问的不同抽象。记录是较新的记录,有一天会被视为替代Mapper。目前,Record支持CouchDB和MongoDB等NoSQL数据库。如果您的数据模型适合NoSQL世界,请尝试Record。否则,您可以将Mapper与典型的关系数据库结合使用。

我希望能为你提到一些有趣的观点。