对来自 JPA 实体的 DDL 进行逆向工程

2022-09-02 08:59:14

我正在玩一些JPA的东西,改变映射以查看它们应该如何等。这是基本的实验。但是,我找不到一个工具可以简单地读取我的实体,然后为我生成表架构。我试图在JBoss工具中找到这样的东西,但nada。Eclipse集成将是一个巨大的优势,但我将采用命令行工具或蚂蚁任务。

有什么想法吗?


答案 1

尝试将以下内容添加到持久性中.xml

对于休眠:

要创建:

<property name="hibernate.hbm2ddl.auto" value="update"/>

要删除并创建:

<property name="hibernate.hbm2ddl.auto" value="create-drop"/>

对于顶链接:

要创建:

<property name="toplink.ddl-generation" value="create-tables"/>

要删除并创建:

<property name="toplink.ddl-generation" value="drop-and-create-tables"/>

对于 EclipseLink:

要创建:

<property name="eclipselink.ddl-generation" value="create-tables"/>

要删除并创建:

<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>

答案 2

我不认为有一种通用的方法来做到这一点,你必须直接使用底层的JPA实现来实现这一点。

对于休眠,有几种可能性:

  • 使用之前发布的 duffymo 方法,使 Hibernate 自动更新数据库架构。
  • 如果你不想要这样,你可以使用Hibernate Toolshbm2ddl工具(注意:链接很糟糕,但显然他们的主页现在有点坏了)。您可以使用它从JPA实体自动生成数据库创建脚本;还有一些Maven和Ant的插件可以自动调用。hbm2ddl

对于 EclipseLink(以前称为 Oracle TopLink,JPA 2.0 RI),请参阅使用 EclipseLink JPA Extensions 进行 Schema Generation。原则上,它与Hibernate非常相似,尽管乍一看我没有看到任何可以用作创建DB脚本的独立实用程序的东西。

其他JPA实现(BEA / Oracle Kodo,Apache OpenJPA)可能有自己实现此目的的特定方法。


推荐