从现有数据库生成JPA 2实体

时间:2011-04-29 14:23:43

标签: java code-generation persistence entity jpa-2.0

如何从现有数据库生成符合JPA2的@Entity?。

我发现了这个:Question

还不清楚JBoss是否会生成兼容的JPA2,而且我想知道是否有独立于供应商的方式来做到这一点。

10 个答案:

答案 0 :(得分:19)

您可以使用Eclipse Dali之类的插件为您完成这项工作。您可以参考文档3.11 Generating Entities from Tables

部分

我不知道有任何特定的供应商独立工具可以做到这一点。

答案 1 :(得分:17)

尝试使用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>

要生成实体文件,只需使用启动项目目录中的maven目标即可 mvn org.codehaus.mojo:exec-maven-plugin:java ,它将在所需位置生成文件。

答案 2 :(得分:6)

答案 3 :(得分:5)

您应该查看JPA2此轨道逆向工程的minuteproject。 它是独立于供应商的工具。在版本0.5.5中,它生成:

  • JPA2实体(用于表和视图)和关联的元模型
  • persistence.xml(只有hibernate配置在0.5.5中可用)但你可以覆盖它。
  • maven pom with querydsl integration
  • 枚举类(如果在浓缩时指定,即在配置文件中指定)。

我没有尝试过H2,但要做到这一点,你需要

  • 在$ MP_HOME / application / lib / extra
  • 中添加H2 jdbc驱动程序
  • 在MinuteProject配置中添加驱动程序类和连接参数。

答案 4 :(得分:4)

Netbeans IDE中有一个选项可以从数据库生成实体。

答案 5 :(得分:4)

Telosys 可能是此类代码生成的最简单方法。

它会生成JPA实体(当然),如果您想要一个完全可操作的Web应用程序

请访问网站:http://www.telosys.org

答案 6 :(得分:3)

Eclipse现在提供此功能已有一段时间了(源自Dali,自Kepler版本开始包含)。只需右键单击您的JPA项目 - &gt; JPA工具 - &gt;从表中生成实体:

Screenshot of the menu entry

答案 7 :(得分:2)

MinuteProject太棒了。我从Oracle架构为JPA2生成了Java类。所有这一切都很轻松。 按照分项目网站上给出的步骤,这里是网址:go here

答案 8 :(得分:0)

“从表格中生成实体”选项适用于H2数据库吗?我总是在选择表格步骤中找到架构列表为空,即使我有一个使用Generic JDBC驱动程序与H2数据库建立有效连接。

同样的连接显示了hibernate-tools中的表。例如,当我在其编辑器中创建逆向工程xml时,我可以刷新表格选项卡并查看完整列表。我不知道hibernate工具是否相关,因为它可能正在使用控制台配置。

答案 9 :(得分:0)

如果您是netbeans用户,我会获得一个优秀的插件,http://plugins.netbeans.org/plugin/53057/jpa-modeler

此视频演示了如何使用它https://www.youtube.com/watch?v=TDbZ5EGpvoY

它可以从NetBeans&#39;安装。菜单工具 - &gt;插件

它适用于我。