Создание объектов JPA 2 из существующей базы данных

Как я могу сгенерировать JPA2-совместимый @Entity из существующих баз данных?.

Я нашел это: Question

По-прежнему неясно, будет ли JBoss генерировать совместимый JPA2, а также я хотел бы знать, есть ли независимый способ поставщика, чтобы сделать это.

Ответ 1

Вы можете использовать плагин как Eclipse Dali, чтобы сделать трюк для вас. Вы можете обратиться к документации, раздел 3.11 Создание объектов из таблиц.

Я не знаю какого-либо конкретного независимого от поставщика инструмента для этого.

Ответ 2

Попробуйте использовать инструменты OPENJPA для обратного отображения. Они предлагают гораздо больше возможностей и легко настраиваются. Этот пример пояснит.

Если вы используете maven в качестве инструмента сборки, добавьте эту запись в свой pom.xml

    <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2</version>
<configuration>
<mainClass>org.apache.openjpa.jdbc.meta.ReverseMappingTool</mainClass>
<commandlineArgs>
    -directory src/main/java -accessType fields
    -useGenericCollections true -package org.yourproject.model
    -metadata none -annotations true
    -innerIdentityClasses false -useBuiltinIdentityClass false
    -primaryKeyOnJoin false
    </commandlineArgs>
<includePluginDependencies>true</includePluginDependencies>
</configuration>
<dependencies>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.0.CR3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.openjpa</groupId>
        <artifactId>openjpa-all</artifactId>
        <version>2.0.1</version>
    </dependency>
</dependencies>
    </plugin>

Также добавьте следующие свойства в файле persistence.xml, который находится в вашей папке META-INF ваших ресурсов. Они будут использоваться средством openjpa для установления соединения с базой данных.

    <properties>
<property name="openjpa.ConnectionUserName" value="${db.username}"/>
<property name="openjpa.ConnectionPassword" value="${db.password}"/>
<property name="openjpa.ConnectionURL" value="${db.url}"/>  
<property name="openjpa.ConnectionDriverName"  value="${db.driver.class}"/>     
   </properties>

Чтобы сгенерировать файлы Entity, просто запустите цель maven в каталоге проекта, используя mvn org.codehaus.mojo: exec-maven-plugin: java, и он будет генерировать файлы в нужном месте.

Ответ 3

Вы должны посмотреть на minuteproject на этой дорожке обратного проектирования для JPA2. Это независимый от поставщика инструмент. В выпуске 0.5.5 он генерирует:

  • Объекты JPA2 (для таблицы и представления) и связанные метамодели
  • persistence.xml(только конфигурация спящего режима доступна в версии 0.5.5), но вы можете перезаписать ее.
  • maven pom с интеграцией querydsl
  • Классы enum (если они указаны при обогащении, то есть в файле конфигурации).

Я не пробовал это с H2, но для этого вам нужно

  • добавьте драйвер H2 jdbc в $MP_HOME/application/lib/extra
  • добавьте класс драйвера и параметры подключения в конфигурацию MinuteProject.

Ответ 4

В среде IDE Netbeans есть опция для генерации сущностей из базы данных.

Ответ 7

Eclipse предоставляет эту функцию в течение некоторого времени (создание от Dali, включенное с версии Kepler). Просто щелкните правой кнопкой мыши проект JPA → Инструменты JPA → Создать объекты из таблиц:

Снимок экрана с записью в меню

Ответ 8

MinuteProject - это потрясающе. Я создал Java-классы из схемы Oracle для JPA2. И все это с большой легкостью. Следуйте за шагами, приведенными на веб-сайте minuteproject, вот URL: перейти сюда

Ответ 9

Используется ли опция "сгенерировать объекты из таблицы" для базы данных H2? Я всегда вижу, что список схем пустой на шаге "Выбрать таблицы", даже если у меня есть правильная настройка соединения с базой данных H2, используя Общий драйвер JDBC.

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