Генерация кода Java JPA

Я специально ищу технику генерации кода JPA

Во-первых, какие проекты могут генерировать JPA-совместимый код? (Например, HibernateTools)

Во-вторых, я также хотел бы настроить утилиту генерации кода, так как она должна соответствовать нашим корпоративным стандартам.

Если нет, то какие фреймворки доступны для генерации Java-кода с использованием отражения? так что я могу писать с нуля.

Примечание: я использовал eclipse для генерации кода JPA и неоднократно реорганизовывал его, чтобы сделать его совместимым.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
29
0
57 002
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Хорошо, в основном у вас все не так: JPA is the generation tool.

Я говорю это, потому что единственное, из чего вы можете сгенерировать объекты JPA, - это SQL, а весь смысл JPA - делать все наоборот. Сначала вы определяете свою объектную модель, а затем можете создавать свои таблицы и запросы.

Например, я видел, как проекты используют Hibernate для определения своих сущностей, а затем у них есть скрипт сборки ant, который создает базу данных из модели сущностей Hibernate.

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

Кроме того, другой инструмент не поможет вам писать именованные запросы, определять правильные параметры каскада для отношений и т. д. И если бы вы сгенерировали код, как бы вы справились с его последующим изменением?

Это просто неправильный путь.

Этот ответ был отвергнут, потому что подход к проблеме с любой стороны приемлем, и у обеих есть компромиссы.

IcedDante 04.04.2017 00:32
Ответ принят как подходящий

Мне тоже сложно понять вопрос, но я постараюсь перефразировать:

  • У вас много данных в БД, и вы хотите получить к ним доступ через JPA.
  • Вы не хотите вручную писать классы для доступа к различным БД / таблицам
  • В настоящее время все / большинство классов вашей модели генерируются из Eclipse.
  • Эти модели имеют аннотации JPA.
  • Классы модели (или аннотации) не соответствуют корпоративным стандартам.

Когда вы говорите «Генерация java-кода JPA», я понимаю создание классов модели с аннотациями JPA из предоставленного соединения с БД. Большинство фреймворков часто называют это обратным проектированием.

Теперь у вас есть два вопроса:

  1. Какие генераторы кода можно рекомендовать для создания классов с аннотациями JPA?
  2. Можно ли настроить вывод этих фреймворков и каким образом?

Чтобы ответить на первый вопрос:

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

На уровне настройки я могу поделиться только тем опытом, который у меня был с Hibernate Tools. Специально для воспроизводимых результатов попробуйте использовать муравьиные задачи. Вы можете легко добавить несколько целей в свою сборку, а генерация кода может быть выполнена на двух уровнях:

С помощью шаблонов вы сможете охватить большинство корпоративных стандартов. Загляните в каталог pojo пакета hibernate-tools. Самый простой способ настроить генерацию кода - скопировать и адаптировать шаблоны и поместить их перед hibernate-tools.jar в задаче ant, используемой для создания pojos.

Как уже указывалось в другом комментарии, впоследствии может быть сложно изменить сгенерированный код. Надеюсь, следующие советы помогут вам:

  • Попробуйте разделить сгенерированные и настроенные исходные файлы в разных папках.
  • Подумайте об использовании @MappedSuperclass для классов, которые вы, возможно, захотите адаптировать вручную.

проверьте JPM2java, это генератор кода для JPA. Единственная загвоздка в том, что он не генерирует код JPA из файлов или таблиц SQL, вам понадобится файл orm.xml. Если вы ищете инструмент для генерации кода непосредственно из таблиц, вы можете попробовать Netbeans. У него есть опции для генерации кода JPA прямо из таблиц.

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

Видеть:

Парень на форуме hibernate, похоже, использует традиционный подход к генерации кода с помощью Hibernate Tools: https://forum.hibernate.org/viewtopic.php?f=9&t=962223&p=2315766&hilit= named+queries+generate#p2315766

Я согласен с cletus в том, что вы не можете сгенерировать все именованные запросы, но я думаю, мы можем представить себе создание базовых именованных запросов, таких как средства поиска, на основе одного или нескольких полей объекта.

Я использовал Плагин Dali Persistence Eclipse, инструмент доступен для скачивания через Сайт обновлений Indigo Java EE SR1.

После установки плагина, чтобы произвести обратный инжиниринг вашей БД, вам необходимо создать новый проект JPA, установить соединение с базой данных, запустить автоматическую загрузку среды выполнения JPA (в моем случае Eclipse Link), а затем запустить процесс генерации.

В процессе генерации кода вас просят предоставить подробную информацию о сопоставлениях таблиц и сгенерированных классах. В конце генерации код чистый.

Еще одно эффективное решение для генерации кода JPA - "Инструменты Telosys".

Плагин Eclipse, работающий из существующей базы данных (подход «база данных первых») с настраиваемые шаблоны. Это решение более гибкое, чем Dali, благодаря своей облегченной модели и шаблонам Velocity (опубликованным на GitHub).

См. Сайт: http://www.telosys.org/

Плагин на Eclipse Marketplace: http://marketplace.eclipse.org/content/telosys-tools

Краткое описание принципа: http://labs.sogeti.com/code-generation-can-it-be-simple-and-pragmatic/

Для Генерация JPA используйте Шаблоны JPA, доступный на GitHub: https://github.com/telosys-templates-v3

Новый URL-адрес для шаблонов Telosys: github.com/telosys-tools Пакет для JPA - "persistence-jpa-TTversion"

lgu 16.06.2015 18:52

Попробую, если это сработает для меня .. Так как я новичок в JPA.

shridutt kothari 15.03.2016 21:07

Минутопроект - это инструмент-генератор, который может генерировать JPA1 / JPA2, а также артефакты, подобные ORM в спящем режиме. Он основан на обратном проектировании из базы данных. Вы можете указать генератору применить соглашение для вашего java-кода, которое не соответствует соглашению о вашей БД, но отображение будет правильным. (Пример префикса имени полосы БД; таблица, начинающаяся с ADMIN_, такая как ADMIN_ENVIRONMENT, - это среда (без администратора) как класс java) На данный момент существует 20+ конвенций, который поможет вам изменить вашу модель, сделав ее менее удобной для БД и более удобной для Java-OO.

Еще одна интересная функция - обновляемый код, позволяющая изменять как сгенерированный код, так и вашу модель А ТАКЖЕ в следующем поколении Ваши модификации будут сохранены! Генератор выполняет слияние.

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

Идеальный инструмент / плагин eclipse для обратной генерации кода jpa - Hibernate Tools. Теперь это стало частью JBoss Tools. Итак, в вашем eclipse начните с установки JBoss Tools.

Затем создайте проект JPA. Этот проект будет выступать в качестве держателя всего вашего кода / конфигураций, связанных с проектом обратной генерации. Установка JBoss Tools в первую очередь дает вам преимущество в том, что ваша конфигурация Hibernate (часть Hibernate Tools) создается вместе с вашим проектом JPA.

Следующим шагом будет использование Hibernate Tools для фактического обратного создания ваших объектов JPA POJO, соответствующих вашим таблицам базы данных.

Чтобы подробно понять шаги для обратной генерации JPA POJO, вы можете взглянуть на следующий учебник ... http://www.javabrahman.com/j2ee/how-to-do-reverse-code-generation-of-hibernatejpa-pojo-entities-using-jboss-tools-eclipse-plugin/

В приведенном выше руководстве также есть ссылки на руководства по созданию проекта JPA, а также для установки инструментов JBoss в вашей установке eclipse, оба из которых являются предварительными условиями для создания обратного кода объектов JPA POJO.

Пожалуйста, посмотрите JOOQ.

http://www.jooq.org/

Открытый исходный код доступен .....

Какие примеры? Можете ли вы воспроизвести здесь один?

Nielsvh 01.04.2016 00:07

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

Для NetBeans: http://jpamodeler.github.io/
Для Eclipse: https://www.eclipse.org/webtools/dali/

Другие вопросы по теме