JPA генерация Java-кода - PullRequest
29 голосов
/ 17 января 2009

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

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

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

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

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

Ответы [ 10 ]

23 голосов
/ 29 января 2009

У меня также возникают трудности с пониманием вопроса, но я постараюсь перефразировать:

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

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

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

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

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

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

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

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

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

  • Попробуйте разделить созданные и настроенные исходные файлы в разных папках.
  • Подумайте об использовании <a href="http://java.sun.com/javaee/5/docs/api/javax/persistence/MappedSuperclass.html" rel="noreferrer">@MappedSuperclass</a> для классов, которые вы, возможно, захотите адаптировать в ручном режиме.
5 голосов
/ 20 августа 2013

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

Плагин 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

3 голосов
/ 08 февраля 2012

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

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

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

2 голосов
/ 29 августа 2013

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

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

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

1 голос
/ 14 января 2010

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

См:

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

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

0 голосов
/ 15 июня 2016

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

Для NetBeans: http://jpamodeler.github.io/
Для затмения: https://www.eclipse.org/webtools/dali/

0 голосов
/ 23 апреля 2015

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

http://www.jooq.org/

Доступен Open Source .....

0 голосов
/ 01 февраля 2014

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

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

Следующим шагом будет использование инструментов Hibernate для фактической обратной генерации объектов 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 Tools в вашей установке Eclipse, которые являются необходимыми условиями для создания обратного кода объектов JPA POJO.

0 голосов
/ 11 июля 2009

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

0 голосов
/ 17 января 2009

Ладно, в принципе у тебя все не так, как надо: JPA is the generation tool.

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

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

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

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

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

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