我玩弄一些JPA的东西,改变映射,看看他们应该如何等等。这是基本的实验。然而,我找不到一个只读取我的实体并为我生成表格模式的工具。我试图在JBoss工具中找到类似这样的东西,但是nada。 Eclipse集成将是一个巨大的优势,但我会采取命令行工具或ant任务。逆向工程从JPA实体DDL
任何想法?
我玩弄一些JPA的东西,改变映射,看看他们应该如何等等。这是基本的实验。然而,我找不到一个只读取我的实体并为我生成表格模式的工具。我试图在JBoss工具中找到类似这样的东西,但是nada。 Eclipse集成将是一个巨大的优势,但我会采取命令行工具或ant任务。逆向工程从JPA实体DDL
任何想法?
我不认为有一个通用的方式来做到这一点与JPA,你必须直接使用底层JPA实现来实现这一点。
对于休眠,有几种可能性:
hbm2ddl
。对于的EclipseLink(以前的Oracle的TopLink中,JPA 2.0 RI)看到Using EclipseLink JPA Extensions for Schema Generation。原则上它与Hibernate非常相似,但乍看之下,我没有看到任何可用作创建数据库脚本的独立实用程序的东西。其他JPA实现(BEA/Oracle Kodo,Apache OpenJPA)可能有其自己的具体方法来实现这一点。
当我使用Hibernate我只是将它添加到我的配置文件:
<property name="hbm2ddl.auto">update</property>
完成所有的操作。我不确定JPA的等价物是什么,但它受Hibernate的影响很大,如果你找不到类似的东西,我会感到惊讶。
无需工具。我通常只运行一个简单的JUnit测试,并为我创建数据库。
DataNucleus拥有自己的SchemaTool能够为您生成架构,或者生成所需的DDL语句供您调整和应用自己。
--Andy(DataNucleus)
尝试添加以下到您的持久性。XML
对于休眠:
要创建:
<property name="hibernate.hbm2ddl.auto" value="update"/>
删除和创建:
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
对于Toplink的:
创建:
<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"/>
添加到詹姆斯·麦克马洪的列表:
关于OpenJPA:
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
我使用Hibernate的org.hibernate.tool.hbm2ddl.SchemaExport
类和这个小方法
在数据库中生成模式:
public static void rebuildSchema()
{
configuration = new Configuration();
configuration.configure();
new SchemaExport(configuration)
.setHaltOnError(true)
.execute(false, true, false, false);
}
在外部文件中创建DDL,请将此调用用于execute
。
new SchemaExport(configuration)
.setHaltOnError(true)
.setOutputFile(outputFile)
.setImportFile("")
.setDelimiter(";")
.setFormat(true)
.execute(false, false, false, true);
它认为是不好的形式设置“hibernate.hbm2ddl.auto”“更新”,因为自动改变生产数据库可以打破它。有关说明,请参阅Hibernate hbm2ddl.auto possible values and what they do?。
通过Maven插件:
<plugin>
<!-- run "mvn hibernate3:hbm2ddl" to generate a schema -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>3.0</version>
<configuration>
<hibernatetool>
<classpath>
<path location="${project.build.directory}/classes" />
<path location="${project.basedir}/src/main/resources/META-INF/" />
</classpath>
<jpaconfiguration persistenceunit="galleryPersistenceUnit" />
<hbm2ddl create="true" export="false" destdir="${project.basedir}/target" drop="true" outputfilename="mysql.sql" format="true" console="true"/>
</hibernatetool>
</configuration>
</plugin>
安东尼奥·贡萨尔维斯说,他blog约API生成的模式英寸
在JPA 2.1 generateSchema方法是为此目的而引入的。从博客
实施例:
public class Main {
public static void main(String[] args) {
Persistence.generateSchema("samplePU", null);
}
}