2013-09-04 3 views
1

У меня есть отдельный скрипт, который создает базу данных и таблицы для каждой поддерживаемой нами базы данных. Я использую JPA для управления данными в базе данных, но JPA не создает базу данных или таблицы.Внешние ключи, каскадирующие в JPA или базе данных Схема

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

Мне известны аннотации, необходимые для этого в JPA, однако я могу создать внешние ключи и каскадные инструкции в сценарии, который я использую для создания баз данных.

Мой вопрос в том, что я использую отдельный скрипт для создания таблиц базы данных, могу ли я просто добавить в скрипт внешние ключи/каскады, а затем игнорировать все аннотации отношений JPA? Есть ли преимущества/недостатки для добавления этой информации как в сценарий базы данных, так и в код JPA?

ответ

1

Вы должны всегда иметь проверку уровня 2. если вы не используете функции JPA, то это большая трата функциональности JPA. вы должны убедиться, что отношения JPA соответствуют вашим отношениям с БД как можно ближе. Это поможет вам, поскольку JPA может кэшировать данные и даже предотвращать ненужные вызовы в БД. Например, если у вас есть ограничение, отличное от нуля, и вы сохраняете без ограничения JPA, ваша БД должна выполнить всю работу и отбросить исключение. Обычно в приложении сеть и БД являются самыми медленными факторами в приложении. поэтому вы должны попытаться имитировать ограничения в JPA, чтобы избежать ненужных накладных расходов. , также используя такие ограничения, вы можете формировать двунаправленные отношения и иметь коллекции связанных объектов и многие другие такие преимущества.

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