[Обновлено] Компоненты представляют собой «автономные значения» или «объекты значений». Там является частичной поддержкой исходящих отношений и входящих связей с спецификацией mappedBy
, но «компонент» не является «сущностью» первого класса.
Многие функции сохранения - запрос, кэширование, Вне определенного момента, будут ограничения с тем, что вы можете сделать с «компонентом». Независимо от того, будете ли вы сталкиваться с такими ограничениями, зависит от того, насколько глубоко вы идете.
Но на самом деле моделирование вашего сценария, полезность таблицы Country
с иностранными ключами ограничена. Поэтому, вероятно, наиболее правильный дизайн заключается в том, чтобы сохранить Address.Country денормализованным и поддерживать его с помощью автозаполнения.
Причиной этого является предпочтительным подходом:
Когда страны не меняют свои имена или границы - это, как правило, не в «реляционные нормализованного» способом. Например, Югославия -> Хорватия, Сербия, Черногория. Судан -> Судан, Южный Судан. Спорный сдвиг границ & страны разбиваются, но на самом деле возможность просто переименовать одну хорошо идентифицированную страну не является общей.
Сравните с людьми: У людей есть стабильная идентификация & может изменить свое имя/адрес, но страны не имеют этого в очень полезном ключе.
я наткнулся http://docs.oracle.com/javaee/6/api/javax/persistence/OneToOne.html здесь его ясно видно, что мы можем отобразить один к одному отношение от типа компонента к типу сущности. Так что я верю, что вы сказали не правильно. – David
Спасибо за ссылку, Дэвид .. похоже, что поддержка двунаправленных ассоциаций и «связанная назад» лучше, чем раньше (хотя могут быть некоторые ограничения). Я бы по-прежнему держал страну в виде простого текстового поля - это лучше моделирование и дизайн, независимо от технического аспекта «могли ли вы» нормализовать его. –