2012-06-30 2 views
7

Я новичок в спящем режиме. Пожалуйста, помогите мне.Нужно ли нам отображать Hibernate? В этом сценарии?

У меня есть 2 таблицы с именем Employee and Country. Мне нужно сохранить Employee с выбранной страной. В моем случае я нигде не буду возвращать данные о сотрудниках и показывать их в пользовательском интерфейсе. Нужно ли поддерживать картографирование (onetoone mapping) между объектами Employee и Country? Не могу ли я напрямую сохранить сотрудника в выбранной стране?

Могу ли я сделать, как показано ниже, в моем доменном объекте сотрудника? Если нет, скажите, пожалуйста, с потенциальными проблемами?

@column (имя = "CountryId")

частное ИНТ CountryId;

+0

Да, вы можете сделать это в своем доменном домене. Если вам не нужен объект Country, зачем его создавать? Просто убедитесь, что вы держите правильный член данных. Должен ли он быть идентификатором страны, или это название или аббревиатура - лучший выбор? Должен ли он быть частью Employee или, возможно, более разумным, объектом Address? – duffymo

+0

Почему вы храните сотрудников, если их никогда не используете? –

+0

Поскольку Someother-приложение нуждается в деталях сотрудника, я сохраняю его через свое приложение. (Я взял сотрудника только для легкого понимания, это не совсем сотрудник) –

ответ

1

Да, вы можете поместить countryId в объект своего сотрудника. Но если вы не нужен объект страны в будущем, то это не имеет никакого смысла для сохранить объект страны.

Если вы разрабатываете вещи для будущих перспектив и может быть требуется в будущем, но не сейчас, то лучше сохранить объект страны.

2

Я верю, что у вас может быть пара вариантов.

  1. Вы можете просто оставить примитив country из своего класса домена полностью. Если вам это не нужно, нет причин говорить Hibernate об этом.
  2. Если вы не собираетесь изменять его при любом его отображении в своем классе домена, и применение аннотации @Transitive может привести к тому, что вы после этого. Это говорит Hibernate, что ничего о идентификаторе страны не требуется на уровне базы данных.

Любой из этих методов помогает обеспечить ссылочную целостность между объектом employee и идентификатором страны. Тем не менее, я бы рекомендовал использовать первый. Если у вас нет причин, чтобы когда-либо понадобился идентификатор страны, не делайте его частью объекта в первую очередь.

Если вам не нужно использовать Страна ID для отношений на обратной стороне, я хотел бы предложить, чтобы убедиться, что вы включили этот

@Column(name = "country", insertable = "false", updatable = "false"). 

Это позволяет получить ID страны, не опасаясь вы перезаписать его случайно.

Надеюсь, что это поможет!

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