Как объекты значения сохраняются и загружаются?

С тех пор нет никаких respositories для объектов значения. Как я могу загрузить все объекты значения?

Предположим, что мы моделируем приложение блога, и у нас есть это классы:

  • Сообщение (Объект)
  • Комментарий (Объект значения)
  • Тег (Объект значения)
  • PostsRespository (Respository)

Я Знаю, что, когда я сохраняю новое сообщение, его теги сохраняются с ним в той же таблице. Но как я мог загрузить все теги всех сообщений. PostsRespository должен иметь метод для загрузки всех тегов? Я обычно делаю это, но я хочу знать мнения других

12
задан hsk3mis 3 February 2017 в 09:37
поделиться

2 ответа

Я ищу лучшее решение для этого вопроса и Я нашел этот пост:

http://gojko.net/2009/09/30/ddd-and-relational-databases-the-value-object-dilemma/

Этот пост очень хорошо объясняет, почему существует много путаницы с ценными объектами и базами данных. Вот фраза, которая мне слишком понравилась:

  • « Настойчивость - не повод превращать все в сущности. »

Гойко Адзич, дайте нам три альтернативы для сохранения наших ценностных объектов.

10
ответ дан 2 December 2019 в 21:23
поделиться

В настоящее время я работаю над похожим примером. Если вам нужно однозначно ссылаться на теги, они не будут длинными простыми объектами значений и могут продолжать расти в сложности. Я решил сделать их собственными сущностями и создать отдельный репозиторий для их извлечения. В большинстве сценариев они загружаются или сохраняются вместе с публикацией, но когда они требуются отдельно, используется другой репозиторий.

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: Отчасти благодаря этому сообщению я решил немного реструктурировать свое приложение. Вы правы, что я, наверное, неправильно делал теги сущностью.С тех пор я изменил свое приложение так, чтобы теги были просто строками, а репозиторий сообщений обрабатывал все требования к хранению тегов. Для операций, требующих публикации, теги загружаются вместе с ними. Для любой операции, для которой требуются только теги или списки тегов, в репозитории есть для этого методы.

3
ответ дан 2 December 2019 в 21:23
поделиться