我有一个使用单个数据库的企业应用程序,但是该应用程序需要支持 mysql , oracle 和 sql * server
作为安装选项。
为了 保持可移植性, 我们将 JPA批注 与 Hibernate 一起使用。我们还为每个要运行的数据库提供了一个测试平台实例。
该应用程序可以在 Maven中 很好地构建,并且我使用过 hibernate3-maven-plugin
并可以为给定的数据库方言自动生成DDL。
解决此问题的最佳方法是什么,以便单个开发人员可以轻松地对所有三个数据库进行测试,并且我们基于Hudson的CI服务器可以正确构建内容。
进一步来说:
我认为hibernate3-maven-plugin中的 hbm2ddl 目标只会生成一个模式文件, 但是显然它连接到实时数据库并尝试创建模式 。有没有办法 让它只 为每个数据库方言 创建模式文件 而无需 连接到数据库? __
如果 hibernate3-maven-plugin 坚持实际创建数据库模式,是否有办法让它删除数据库并在创建模式之前重新创建它?
我认为每个开发人员(和Hudson构建机器)在每个数据库服务器上都应该有各自独立的数据库。这是典型的吗?
开发人员是否将必须运行Maven三次,每个数据库供应商一次?如果是这样,如何在构建计算机上合并结果?
hibernate3-maven-plugin中有一个 hbm2doc 目标。运行这三遍似乎有点矫kill过正……我必须相信对于每个数据库它几乎都是相同的。
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-maven-plug坚持实际创建数据库模式,是否有办法让它删除数据库并在创建模式之前重新创建它?
往上看。但以防万一,为此设置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)我认为每个开发人员(和hudson构建机器)在每个数据库服务器上都应具有自己的独立数据库。这是典型的吗?
是的,我认为这是最佳做法(请参阅每个开发人员使用一个数据库实例)。
4)开发人员是否必须对每个数据库供应商运行三次Maven …一次?如果是这样,如何在构建计算机上合并结果?
是的,很有可能,我将为每个数据库使用配置文件。在构建机器上,我将构建一个矩阵项目。
5)在hibernate3-maven-
plugin中有一个hbm2doc目标。运行这三次似乎有点矫kill过正…我必须相信每个数据库几乎都是相同的。
我不习惯使用此工具,但我想输出可能会有一些变化(例如,使用主键生成)。我将为每个数据库生成模式文档,但是仅在发布时生成(当然不需要在每个构建版本中都运行它)。
我有一个服务方法: 在对jpa存储库(findAll)的第一次调用中,结果长度为 最后的dto是: 列表结果列表=新的ArrayList()// 每个对象都有列表EntityList// 服务响应时间为10-15秒。。。 有没有减少服务时间的最佳方法?如果我使用Oracle表视图或递归查询而不是Java? 谢谢你的回复
问题内容: 我们在项目中使用MYSQL和Hibernate。 JPA用于将对象持久存储在DB中。 我们有多个具有相似代码的类 现在我们也想对oracle提供支持。我们应该怎么做?oracle不支持strategy = GenerationType.AUTO。 一个解决方案是我们可以在每个POJO中定义我们不想做的序列吗? 请提供一些建议,以便我们继续前进。 问题答案: AUTO策略也应适用于Ora
问题内容: 我有一个Spring + Hibernate + JPA应用程序。用户登录时,可以从要连接的数据库列表中进行选择(这是要求)。所有数据库都有相同的架构,因此将使用相同的实体和DAO。 现在,我有一个EntityManager(目前正在使用一个数据库),它被注入到DAO中,如下所示: 有什么方法可以让DAO根据从服务层接收到的参数/属性自动接收entityManager(由Spring管
我的团队目前有几个试用版客户在使用我们的产品。当前将客户的数据库升级到最新版本的方法包括重新初始化数据库和手工重新创建客户配置,这并不多,但肯定很繁琐,并且会随着我们实施某种迁移策略而改变。 我的问题是,是否可以使用flyway(或其他一些工具)来管理我们产品的所有实例的数据库模式迁移,同时保留独立的实例数据?解决这类问题的最佳方法是什么。
问题内容: 我正在尝试配置Spring + Hibernate + JPA以使用两个数据库(MySQL和MSSQL)。 我的datasource-context.xml: 每个persistence.xml包含一个单元,如下所示: PersistenceUnitManager导致以下异常: 如果只留下一个没有列表的persistence.xml,则每个列表都可以正常工作,但我需要2个单元… 我还尝
我需要一个概念来设计一个使用Spring boot、Hibernate和JPA的多数据库应用程序。 目前我正在考虑支持4个关系数据库(Mysql,H2,SQLLite,Oracle)。 我所做的是使用spring boot profile特性选择正确的数据库profile,然后加载相关的数据库属性。