Jpa: где поставить пользовательские методы toString ()? - PullRequest
1 голос
/ 18 декабря 2010

Я использовал Netbeans для автоматического создания сущностей jpa, начиная с БД. Теперь мне нужно вставить некоторый логический код внутри этих объектов. Например, прежде всего мне нужно написать собственный метод toString () для каждого класс сущностей jpa. Проблема в том, где я должен поставить этот код? Я знаю, что классы jpa могут быть перезаписывается Netbeans при повторном запуске мастера jpa после следующего обновления схемы БД. Так что я хотел бы написать некоторую логику сущностей без отказа от автогенерации jpa особенности Netbeans. Нужно ли использовать внешние инструменты, такие как инструменты слияния, препроцессор функции или мне нужно реализовать некоторый класс наследования или определенный шаблон? В прошлом я использовал Apache Cayenne. Для каждой сущности БД создается два java классы. Первый (родительский) с отображением сущности полей, а второй (пустой дочерний класс) в качестве контейнера для логики, которая никогда не перезаписывается (и ни регенерированный).

Любые советы будут оценены.

С наилучшими пожеланиями из Италии

Ответы [ 3 ]

2 голосов
/ 18 декабря 2010

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

0 голосов
/ 20 декабря 2010

Да, я мог бы использовать систему контроля версий для синхронизации пользовательского источника с автоматически сгенерированным кодом. Но правильно ли кодировать бизнес-логику внутри класса сущностей jpa ???

0 голосов
/ 18 декабря 2010

Я бы посоветовал вам решить эту проблему как проблему контроля версий. Создайте свои классы, затем измените их, как вам нужно. Проверьте результаты в системе контроля версий, как только вы будете довольны. Когда схема базы данных изменится, обновите классы. Им не хватит ваших модификаций, но это нормально. Теперь синхронизируйте свою локальную копию кода с тем, что находится в системе контроля версий: вы увидите два вида исходящих изменений: изменения, внесенные для отражения изменений в схеме, и удаления ваших изменений (потому что они были переопределены вслепую). Используйте свой инструмент управления исходным кодом, чтобы отбросить последние изменения и сохранить прежние; по сути, вы объединяете новую сгенерированную версию со старой измененной версией и сохраняете нужные биты из обоих.

Я не использую NetBeans, поэтому не могу подробно описать, как это сделать. В Eclipse это просто: регенерируйте, выберите все, Team> Synchronize, затем пройдите и «копируйте текущие изменения справа налево» куда вам нужно.

...