Я не уверен в отношении сущности между пользователем и комментарием, чтобы сохранить комментарий только с текстом комментария и идентификатором пользователя - PullRequest
0 голосов
/ 02 апреля 2019

Я новичок в Hibernate, и у меня есть основной вопрос. У меня есть два класса сущностей Пользователь и Комментарии с отношением, определенным как Один toMany от пользователя к комментариям и много на одно от комментариев к пользователю. Теперь, если мой пользовательский интерфейс отправляет мне некоторые комментарии с комментариями_текста и user_id, каков наилучший способ сохранить его? Определяя @ManyToOne Частный пользователь Мне нужно использовать весь пользовательский объект для хранения этой информации, но все, что мне нужно, это сохранить комментарий с user_id в таблице и запрашивать информацию о пользователе, когда мне это нужно.

Я новичок в Hibernate, так что это могут быть просто основы, но кто-то может мне помочь?

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Соотношение между пользователями и комментариями много-много, поэтому вы можете попытаться создать таблицу со следующими полями:

  • key
  • commenter
  • прокомментировал
  • комментарий-текст
0 голосов
/ 02 апреля 2019

Ваш вопрос затрагивает 2 очень важных пункта.

Наличие полностью подключенной модели базы данных - это рецепт низкой производительности и некоторой запутанности.

С точки зрения дизайна, вы, вероятно, не хотите менять пользователя при создании, обновлении или удалении комментария. Так что из Hibernate, вероятно, вы можете пропустить связь между Comment и User и получить информацию о пользователе другим способом, когда вы загружаете комментарии (так как я предполагаю, что вы хотите показать имя пользователя рядом с комментарием). Поэтому, когда вы получаете фрагмент текста и идентификатор пользователя, вы можете сразу его сохранить, но не забудьте проверить, что на самом деле идентификатор пользователя - это тот, кто публикует комментарий, а не тот, кто отправляет сфабрикованные данные.

Теперь думаем с точки зрения пользователя. Вам всегда нужна информация о комментариях при загрузке пользователя? (Hibernate будет загружать данные комментариев лениво, так как все отношения * toMany по умолчанию ленивы). С точки зрения дизайна, чем больше связаны ваши сущности, тем больше у вас шансов, что что-то сломается, когда вы сделаете небольшое изменение.

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

Я предлагаю вам прочитать книгу Реализация доменно-управляемого дизайна , поскольку она затрагивает эти темы и является фантастическим источником полезных советов по дизайну и случается с использованием Java + Hibernate в примерах!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...