最好的办法Java/专家/访问用户/休眠建立与多个供应商数据库的支持?
题
我有一个企业应用程序,它使用一个单一的数据库,但是该应用程序需要支持 mysql, oracle, , sql*服务器 如安装选项。
来尝试 仍然是便携式的 我们使用 访问用户的注解 与 休眠 作为执行情况。我们还有一个测试床实例的运行的每个数据库,用于发展。
该应用程序是建立在很好 行家 和我一起的 hibernate3-玛文件 并且可以自动生成言对于给定的数据库的方言。
什么是最好的方式方法,这样,个人开发者可以很容易地测试针对所有三个数据库和哈德逊我们基于CI服务器可以建立正确的事情.
更具体地说:
我以为 hbm2ddl 目标在 hibernate3-玛文件 只会生成一个模式文件, 但是显然它连接到一个活动数据库并试图创建的架构.有没有一种方法来有这个 只是创建模式的文件 对每个数据库的方言 没有 连接到一个数据库?
如果的 hibernate3-玛文件 坚持上实际创建了数据库模式,是有一个办法把它放下数据库和重建之前建立的架构?
我想到的是,每一个开发商(和哈德逊建立机)应该有自己的独立数据库对每个数据库服务器。这是典型的?
将开发商已经运行了三次...一旦每个数据库供应商?如果是,如何合并的结果,在建立机?
还有一个 hbm2doc 目标在hibernate3-行-插件。它似乎矫枉过正运行这三次...我必须相信它会以几乎相同,为每个数据库。
解决方案
1)有没有办法有这样的只是创建模式的文件对每个数据库方言没有连接到一个数据库?
设置 export
要 false
.事情是这样的:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>annotationconfiguration</implementation>
</component>
</components>
<componentProperties>
<export>false</export><!-- do not export to the database -->
<drop>true</drop>
<configurationfile>src/main/resources/hibernate.cfg.xml</configurationfile>
<outputfilename>my_schema.ddl</outputfilename>
</componentProperties>
</configuration>
</plugin>
2)如果hibernate3-家-塞坚持认为实际上创建的数据库模式,是有一个办法把它放下数据库和重建之前建立的架构?
参见上文。但就是在这种情况下,对于这组 update
要 true
:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>annotationconfiguration</implementation>
</component>
</components>
<componentProperties>
<export>true</export>
<update>true</update><!-- update the schema -->
<drop>true</drop>
<configurationfile>src/main/resources/hibernate.cfg.xml</configurationfile>
<outputfilename>my_schema.ddl</outputfilename>
</componentProperties>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.5.3.0_1</version>
</dependency>
</dependencies>
</plugin>
3)我想,每个开发商(和哈德逊建立机)应该有自己的独立数据库对每个数据库服务器。这是典型的?
是的,我认为这是最好的做法(见 使用一个数据库的实例每个开发商).
4)将开发商已经运行三次...一旦每个数据库供应商?如果是,如何合并的结果,在建立机?
是的,非常有可能我会使用配置文件对每个数据库。在建立机,我会的 建立一个矩阵项目.
5)有hbm2doc目标内hibernate3-行-插件。它似乎矫枉过正运行这三次...我得去相信它会以几乎相同,为每个数据库。
我不习惯这个工具,但我猜可能有一些小变化,在产出(例如与初级关键产生)。我会产生的模式的文件对每个数据库,但在释放时间只有(当然不需要运行,在每个建设).