в нем говорится, что однонаправленная ассоциация «один ко многим» с таблицей соединений гораздо предпочтительнее, чем просто использование столбца внешнего ключа в принадлежащей сущности. Мой вопрос в том, почему это гораздо предпочтительнее?
Рассмотрим ситуацию, когда принадлежащий тип сущности также может принадлежать другому родительскому типу сущности. Вы размещаете ссылки внешнего ключа в принадлежащей таблице на обе родительские таблицы? Что делать, если у вас есть три типа родителей? Он просто не подходит для больших проектов.
Присоединяемая таблица отделяет соединение, так что принадлежащая таблица не знает родительских таблиц, что позволяет элегантно масштабировать дизайн.
personskaffmanschedule20.08.2009
comment
См. разницу между внутренними операциями SQL, вызываемыми в таблице соединений и внешним ключом, на странице stackoverflow.com/q/18333198/418439.
- personLee Chee Kiam; 22.08.2013
Если дочерняя сущность имеет только один родительский тип, то нет необходимости в таблице соединений. Я сделал это с помощью JPA (с спящим режимом).
Преимущества: На один стол меньше. Возможно, лучшая производительность. Нет "для чего эта таблица?" тип вопросы.
Недостаток: с точки зрения объектно-ориентированного программирования вводится дополнительная зависимость между дочерним и родительским элементами. На практике это, вероятно, не так уж и важно, поскольку отношения у ребенка носят частный характер.
не могли бы вы подробнее рассказать о недостатках
- personAravind Yarram; 01.02.2011
comment
Просто обратите внимание, что с JPA 2.0 ссылка дочернего элемента на родителя больше не требуется. Просто используйте аннотацию @JoinColumn для родителя.
- personEdy Bourne; 26.10.2014
comment
@EdyBourne - Вы знаете, какая версия Hibernate добавила поддержку для этого?
- personSnekse; 11.09.2015