2013-09-07 1 views
0

Предположим, у меня есть класс Address, который зависит от класса User. Адрес - тип компонента. В классе «Адрес» можно указать ссылку на любую другую страну, указанную в разделе «Страна».Может ли тип компонента сопоставляться типу Entity в спящем режиме?

если да?

ли все 4 возможных отношений с адресом и странами

один-к-одному

много-к-одному

многие-ко-многим

один-ко-многие

Если возможно, объясните с помощью аннотации JPA

ответ

2

[Обновлено] Компоненты представляют собой «автономные значения» или «объекты значений». Там является частичной поддержкой исходящих отношений и входящих связей с спецификацией mappedBy, но «компонент» не является «сущностью» первого класса.

Многие функции сохранения - запрос, кэширование, Вне определенного момента, будут ограничения с тем, что вы можете сделать с «компонентом». Независимо от того, будете ли вы сталкиваться с такими ограничениями, зависит от того, насколько глубоко вы идете.

Но на самом деле моделирование вашего сценария, полезность таблицы Country с иностранными ключами ограничена. Поэтому, вероятно, наиболее правильный дизайн заключается в том, чтобы сохранить Address.Country денормализованным и поддерживать его с помощью автозаполнения.

Причиной этого является предпочтительным подходом:

Когда страны не меняют свои имена или границы - это, как правило, не в «реляционные нормализованного» способом. Например, Югославия -> Хорватия, Сербия, Черногория. Судан -> Судан, Южный Судан. Спорный сдвиг границ & страны разбиваются, но на самом деле возможность просто переименовать одну хорошо идентифицированную страну не является общей.

Сравните с людьми: У людей есть стабильная идентификация & может изменить свое имя/адрес, но страны не имеют этого в очень полезном ключе.

+0

я наткнулся http://docs.oracle.com/javaee/6/api/javax/persistence/OneToOne.html здесь его ясно видно, что мы можем отобразить один к одному отношение от типа компонента к типу сущности. Так что я верю, что вы сказали не правильно. – David

+0

Спасибо за ссылку, Дэвид .. похоже, что поддержка двунаправленных ассоциаций и «связанная назад» лучше, чем раньше (хотя могут быть некоторые ограничения). Я бы по-прежнему держал страну в виде простого текстового поля - это лучше моделирование и дизайн, независимо от технического аспекта «могли ли вы» нормализовать его. –

Смежные вопросы