Генерация В спящем режиме hbm XML-файлы и классы объектов из существующей схемы DB

return default(T);
7
задан Brad Parks 10 April 2013 в 12:48
поделиться

4 ответа

You should use the hibernate reverse engineering tools for this. See the hibernate reverse engineering tools documentation for more information.

It's not clear to me how to generate JPA annotated classes, but you might want to think about not using hbm.xml files anymore if this is a new project, favoring annotations.

1
ответ дан 7 December 2019 в 12:24
поделиться

I would recommend Hibernate Tool

1
ответ дан 7 December 2019 в 12:24
поделиться

Я с удовольствием использовал Hibernate Tools (примеры приведены на их сайте). Ниже я подробно описываю свой конкретный, продвинутый и интересный (как мне кажется) вариант использования.


На самом деле, я столкнулся с интересной проблемой в нашем большом проекте (приближение 800 таблиц, команда, управляемая базой данных)

  • Новые таблицы будут сохранять прибытие, чтобы я мог сгенерировать их из базы данных (используя HibernateTools и создавая аннотированные сущности) (на самом деле сейчас мы используем другой процесс ...)
  • Но большинство таблиц не были новыми, у меня уже были реализации java и .hbm.xml. Оба иногда были изменены из БД, в которой они были изначально созданы, поэтому было невозможно воссоздать их с гарантией, что ничего не сломается. Мне нужно было перенести сущности, изменив как можно меньше (то есть только аннотации)!

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

      Примечание: две сущности не смогли скомпилировать сгенерированный полный конструктор, они превысили ограничение в 256 параметров! Но я думал, что этот конструктор в любом случае был бесполезен, кто мог запомнить порядок из 256 параметров, поэтому я удалил его.

    • Я также хотел перенести свои наборы на общие (кроме сеттера, с которым я пока не беспокоился).

Для переноса карты, Я использовал Hibernate Tools (настроенный по мере необходимости, шаблон и код) следующим образом:

  • источником информации были файлы .hbm.xml с файлом hibernate.cfg.xml

    Примечание: мне пришлось извлечь Сначала hibernate.cfg.xml, заменив компонент Spring, который раньше содержал список. Но это также было полезно для инструментов базы данных, таких как Squirrel, которые могли использовать его для включения завершения HQL ...

  • сгенерированный вывод был файлами X2.java (для класса X.java в том же пакете), содержащих только поля , геттеры и аннотации (без сеттеров или конструкторов) (общие наборы)

Я бы использовал компилятор Eclipse (ошибка «дубликат ...»), чтобы перепроверить мое редактирование, чтобы сделать его быстрее и менее подверженным ошибкам (ошибка не рассматривалась. , у нас много клиентов в производстве!). Для каждого перенесенного класса я бы скопировал из сгенерированного класса в существующий:

  • измените persistence.cfg.xml, чтобы использовать класс вместо .hbm.xml
  • вырезать и вставить @Entity перед именем класса
  • вырезать и вставьте все поля Set после существующих полей, удалите только существующие, у которых есть ошибка компиляции (в результате у меня теперь есть поля с универсальными наборами)
  • вырежьте и вставьте все геттеры (то есть остальную часть класса) после существующие сеттеры
  • открывают вид схемы, показывая только общедоступные динамические методы, не начинающиеся с 'set', удалите второй экземпляр метода, скопируйте его аннотации в первый экземпляр (навигация с использованием представления структуры) (порядок методов в классе сохраняется, что было важно для истории CVS, особенно для доказательства неверующим, что миграция не нарушила их код, он уже был сломан раньше!).
  • ... некоторые детали оставлены для дальнейшего обсуждения ...

Для любопытных, в этом месяце мы приближаемся к 200 аннотированным объектам :-). Для миграции типичного объекта со 100 полями требуется около 30 минут работы. Осталось всего 300 часов, чтобы закончить эту вырезанную пасту для оставшихся 600 объектов! ; -)

3
ответ дан 7 December 2019 в 12:24
поделиться

Netbeans имеет функции для создания файлов конфигурации, файлов с аннотациями и т. Д.

0
ответ дан 7 December 2019 в 12:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: