Когда использовать Mapper или Record в Lift? - PullRequest
15 голосов
/ 03 июля 2011

Я хотел бы понять, каковы варианты использования , преимущества и неудобства выбора использования Запись , Mapper или даже оба в приложении Liftweb .

Этот вопрос возник, когда я попытался:

  • создать древовидную структуру дляклассы моделей
  • создают похожую древовидную структуру для рендеринга классов на странице
  • , гарантирующую, что разные классы в дереве могут находиться в разных состояниях одновременно.Один находится в состоянии EDIT или CREATE, а другой - в состоянии VISUALIZE.
  • классы моделей могут создаваться, считываться или сохраняться в веб-службе RESTful, которая уже функционирует.

Я привожу здесь примеры использования только для записи.Вы можете ответить более общим способом.

Ответы [ 2 ]

16 голосов
/ 06 июля 2011

Mapper был частью Lift до того, как Lift был Lift.Это простой мост в стиле «Active Record» между базой данных и Scala.Я построил 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 - надежный, но хитрый.

Запись - это более общая абстракция между резервным хранилищем иScala.Он имеет более слабые реализации идей, изложенных в разделе «Хранение значения с помощью байтов» ... и очень немногие это замечают или заботятся.

Существуют реализации Record для MongoDB, CouchDB, Squeryl и других механизмов хранения.Написание нового бэкенда - это несколько дней работы.

В записи много «аномалий», и у каждого бэкенда есть свои причуды.Текущий владелец Record приступил к оптовому рефакторингу Record.

Я не думаю, что Record или Mapper предоставят вам древовидные структуры "из коробки", если вы не используете бэкэнд MongoDB и нев этом случае ваши древовидные структуры будут основаны на документах JSON, а не на отношениях.

2 голосов
/ 04 июля 2011

Ну, библиотеки Mapper и Record - это только разные абстракции для доступа к базе данных в приложениях Lift. Запись более новая и считается заменой Mapper однажды. На данный момент Record поддерживает базы данных NoSQL, такие как CouchDB и MongoDB. Если ваша модель данных вписывается в мир NoSQL, попробуйте Record. В противном случае вы можете использовать Mapper в связи с типичной реляционной базой данных.

Надеюсь, я упомянул для вас несколько интересных моментов.

...