我想使用Hibernate的模式生成为我无法直接从我的PC访问的数据库生成DDL,只使用hibernate配置文件。如果可能的话,我想跳过本地oracle数据库的安装。 hibernate可以为适当的方言,版本等的“理论”数据库生成DDL,还是这个梦想?
是否有其他工具可以做到这一点?
答案 0 :(得分:4)
您可以使用In-memory database during testing phase;
hibernate.hbm2ddl.auto ="更新"
或者您可以使用hibernatetool
中的Maven
生成您的DDL:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>generate-test-sql-scripts</id>
<phase>generate-test-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<property name="maven_test_classpath" refid="maven.test.classpath"/>
<path id="hibernate_tools_path">
<pathelement path="${maven_test_classpath}"/>
</path>
<property name="hibernate_tools_classpath" refid="hibernate_tools_path"/>
<taskdef name="hibernatetool"
classname="org.hibernate.tool.ant.HibernateToolTask"/>
<mkdir dir="${project.build.directory}/test-classes/hsqldb"/>
<hibernatetool destdir="${project.build.directory}/test-classes/hsqldb">
<classpath refid="hibernate_tools_path"/>
<jpaconfiguration persistenceunit="testPersistenceUnit"
propertyfile="src/test/resources/META-INF/spring/jdbc.properties"/>
<hbm2ddl drop="false" create="true" export="false"
outputfilename="create_db.sql"
delimiter=";" format="true"/>
<hbm2ddl drop="true" create="false" export="false"
outputfilename="drop_db.sql"
delimiter=";" format="true"/>
</hibernatetool>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
此Maven
插件将生成以下DDL文件:
答案 1 :(得分:0)
从hibernate-tools 5.3开始,您还可以使用集成的hibernate-tools-maven-plugin。在此您还应该找到有关如何使用它的文档。
不幸的是,尚未发布有关Maven站点的参数/目标的详细说明,但可以使用here的旧版本。
将会有一个PR(#842)允许生成该网站...不幸的是,它尚未找到路。