Ваш вопрос затрагивает 2 очень важных пункта.
Наличие полностью подключенной модели базы данных - это рецепт низкой производительности и некоторой запутанности.
С точки зрения дизайна, вы, вероятно, не хотите менять пользователя при создании, обновлении или удалении комментария. Так что из Hibernate, вероятно, вы можете пропустить связь между Comment
и User
и получить информацию о пользователе другим способом, когда вы загружаете комментарии (так как я предполагаю, что вы хотите показать имя пользователя рядом с комментарием). Поэтому, когда вы получаете фрагмент текста и идентификатор пользователя, вы можете сразу его сохранить, но не забудьте проверить, что на самом деле идентификатор пользователя - это тот, кто публикует комментарий, а не тот, кто отправляет сфабрикованные данные.
Теперь думаем с точки зрения пользователя. Вам всегда нужна информация о комментариях при загрузке пользователя? (Hibernate будет загружать данные комментариев лениво, так как все отношения * toMany по умолчанию ленивы). С точки зрения дизайна, чем больше связаны ваши сущности, тем больше у вас шансов, что что-то сломается, когда вы сделаете небольшое изменение.
Что-то, что помогает мне в этой ситуации, это выяснить, какие данные изменяются вместе или имеют взаимозависимые ограничения. Если их нет, то эти объекты могут быть разделены. А в случае, если вам нужно повысить производительность, у вас могут быть объекты только для чтения, которые отображают все данные, необходимые для некоторых ваших представлений.
Я предлагаю вам прочитать книгу Реализация доменно-управляемого дизайна , поскольку она затрагивает эти темы и является фантастическим источником полезных советов по дизайну и случается с использованием Java + Hibernate в примерах!