Могу ли я определить отношения в классе Entity, не имея их в базе данных?

0

Мне нужно написать приложение в Java EE6. Мне предоставлена ​​база данных MySQL, на которую мне не разрешено вносить какие-либо изменения. База данных хорошо структурирована и нормализована, но не имеет внешних ключей, определенных для обеспечения целостности. (Он использует механизм MyISAM).

Можно ли определить отношения (используя @JoinColumn, @ManyToOne и т.д.) в классах сущностей JPA без определения внешних ключей в базе данных?

  • 0
    В качестве отступления: я бы сказал, что «хорошо структурированный» и «не определены никакие отношения» являются несовместимыми утверждениями в вашем предложении. Одно исключает другое.
  • 0
    @Chris: под «хорошо структурированным» я имел в виду, что оно нормализовано. И под «не определены никакие отношения» я имел в виду, что внешние ключи не используются для обеспечения ссылочной целостности. (Гоша, я сделал такой беспорядок в этом посте! Отредактировал оригинал, чтобы уточнить)
Теги:
jpa
java-ee-6

2 ответа

1
Лучший ответ

База данных хорошо структурирована, но не имеет никаких отношений (внешних ключей). (Он использует механизм MyISAM).

Внешние ключи используются для проверки и обеспечения ссылочной целостности, а не для объединения таблиц. Другими словами, использование таблиц MyISAM не мешает таблицам иметь отношения между ними.

Можно ли определить отношения (используя @JoinColumn, @ManyToOne и т.д.) в классах сущности JPA, фактически не имея их в базе данных?

Пока существуют такие отношения (независимо от того, что FK обеспечивает их целостность), вы можете использовать их для сопоставления своих объектов.

2

Что вы подразумеваете под "отношениями" в базе данных? Если вы просто имеете в виду ограничения внешнего ключа (т.е. У вас есть значения внешнего ключа, но нет ограничений), тогда вам не нужны те, которые определяют отношения в JPA, просто используйте значения внешнего ключа.

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

  • 0
    Я просто имею в виду внешние ключи. (Отредактировано оригинальным постом для уточнения).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню