Поддержание объектов JPA - PullRequest
3 голосов
/ 27 мая 2010

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

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

К настройкам добавились именованные запросы, которые мы добавили, каскадные типы, наши собственные методы String, методы equals и hash code. Я думал о создании классов, которые расширили бы сущности для добавления в методы toString, equals и hascode, так что, если бы мы сгенерировали их, они не потерялись. Но я не был уверен насчет каскадных типов и именованных запросов.

Есть ли лучший способ или это просто желаемое за действительное?

1 Ответ

1 голос
/ 09 июля 2010

Я считаю, что это просто желаемое за действительное. Генерация ваших сущностей и расширение их просто создает вам другой набор проблем. Сгенерированные вами сущности должны быть аннотированы как @MappedSuperclass и не будут иметь имен таблиц. Кроме того, вашим расширениям, возможно, придется повторять некоторые аннотации, плюс вам в любом случае придется иногда настраивать настройки именованных запросов ... просто хлопот.

Как правило, создание сущностей из схемы базы данных - это разовая вещь, которую нужно поддерживать вручную.

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

Итог - синхронизация постоянных сущностей и схем базы данных требует тщательной ручной работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...