何时使用Mapper或Record in Lift?

Ale*_*ins 15 scala web-applications lift

我想了解在Liftweb应用程序中选择使用Record,Mapper甚至两者的用例,优点不便之处.

当我试图:

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

我把这些用例放在这里仅供记录.您可以以更一般的方式回答.

Dav*_*lak 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- 该-bytes.html

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

Mapper坚固而又狡猾.

Record是后备存储和Scala之间更通用的抽象.它在"用字节保持意义"中概述的概念的实现较弱......并且很少有人注意或关心.

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

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

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