我玩弄一些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);
}
}