Я специально ищу технику генерации кода JPA
Во-первых, какие проекты могут генерировать JPA-совместимый код? (Например, HibernateTools)
Во-вторых, я также хотел бы настроить утилиту генерации кода, так как она должна соответствовать нашим корпоративным стандартам.
Если нет, то какие фреймворки доступны для генерации Java-кода с использованием отражения? так что я могу писать с нуля.
Примечание: я использовал eclipse для генерации кода JPA и неоднократно реорганизовывал его, чтобы сделать его совместимым.




Хорошо, в основном у вас все не так: JPA is the generation tool.
Я говорю это, потому что единственное, из чего вы можете сгенерировать объекты JPA, - это SQL, а весь смысл JPA - делать все наоборот. Сначала вы определяете свою объектную модель, а затем можете создавать свои таблицы и запросы.
Например, я видел, как проекты используют Hibernate для определения своих сущностей, а затем у них есть скрипт сборки ant, который создает базу данных из модели сущностей Hibernate.
Определения сущностей JPA - особенно с аннотациями - не совсем обременительны. Они действительно ваш лучший вариант, как первое, что нужно сделать, а не быть продуктом чего-то другого.
Кроме того, другой инструмент не поможет вам писать именованные запросы, определять правильные параметры каскада для отношений и т. д. И если бы вы сгенерировали код, как бы вы справились с его последующим изменением?
Это просто неправильный путь.
Мне тоже сложно понять вопрос, но я постараюсь перефразировать:
Когда вы говорите «Генерация java-кода JPA», я понимаю создание классов модели с аннотациями JPA из предоставленного соединения с БД. Большинство фреймворков часто называют это обратным проектированием.
Теперь у вас есть два вопроса:
Чтобы ответить на первый вопрос:
Мне очень нравится генерация кода 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"
Попробую, если это сработает для меня .. Так как я новичок в JPA.
Минутопроект - это инструмент-генератор, который может генерировать 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.
Открытый исходный код доступен .....
Какие примеры? Можете ли вы воспроизвести здесь один?
Графический инструмент с открытым исходным кодом для создания класса JPA, визуализации и изменения базы данных, обратного проектирования исходного кода и импорта моделей из существующей базы данных.
Для NetBeans: http://jpamodeler.github.io/
Для Eclipse: https://www.eclipse.org/webtools/dali/
Этот ответ был отвергнут, потому что подход к проблеме с любой стороны приемлем, и у обеих есть компромиссы.