Нет.Никогда.Это общий вопрос, который я слышал от многих людей.И ответ таков: когда вы проектируете объекты:
Вы НЕ ДОЛЖНЫ мыслить с точки зрения отношений (RDBMS), но вы должны думать с точки зрения объектов (Java) .
Более подробно.Hibernate пытается решить довольно сложную задачу: связать объектно-ориентированную вселенную Java с реляционным миром.В большинстве случаев это достигается за счет путаницы между двумя парадигмами.
Лучшая стратегия (и менее болезненная) состоит в том, чтобы спроектировать ваши сущности и позволить Hibernate создать схему для вас.Таким образом, предполагая, что
Stock entity refers to many categories (Set of Categories)
and
Category entity has a set of Stock ids
У нас есть отношение «многие ко многим», доступное из обеих сущностей. И вам нужны только два класса здесь .
Затем вам нужно аннотировать (здесь я предполагаю, что вы используете аннотации, а не .hbm.xml) эти наборы как атрибуты многие-ко-многим (читай Руководство по Hibernate ).
Скомпилируйте код.Затем Настройте Hibernate для автоматической генерации схемы (hbm2ddl.auto - это свойство, которое включает генерацию схемы).Если все в порядке, вы увидите 3 таблицы в базе данных, 2 таблицы для сущностей и 1 таблицу для ассоциации «многие ко многим» (это третья нормальная форма схемы, например, самая чистая).
Тогда сохраняйте некоторые сущности и наслаждайтесь.И никогда не забывайте Думайте в терминах ОО при использовании гибернации (нет операции JOIN) .