如何使Spring JDBC查询独立于数据库?

时间:2012-08-03 09:03:23

标签: unit-testing hsqldb junit4 spring-jdbc database-independent

我使用的是Spring Jdbc 3.0.5 RELEASE,我们正在根据客户的要求使用DB2数据库。我们希望针对HSQL DB bcz运行我们的测试,我们不想通过我们的测试来干扰DB2主键(通过创建序列来实现)。

我已经使用了" jdbc:embedded-database" ApplicationContext.xml中与测试相关的标记,用于创建所需的表并插入测试的虚拟数据(成功运行)。

但是现在显然我们在DAO层的DB2 Dialect中编写的查询语法存在问题。

解决此问题的最佳解决方案是什么?

是否有任何' Hibernate Criteria'像支持Spring jdbc的API,使我们的查询与任何数据库上运行的连接相关(在运行HSQL时更痛苦)

提前致谢

1 个答案:

答案 0 :(得分:0)

JPA是一个很好的解决方案,它为您提供了数据库操作的标准接口,允许您相当自由地交换引擎实现(Hibernate,Toplink等)。

如果您需要,那么在JPA不能给您足够灵活性的情况下,您总是可以混合使用JPA和JDBC。

您应该会发现,在设置持久性上下文时,指定底层数据库的方言可归结为配置选项。这应该消除JPQL中各种数据库之间的一些差异。

与以往一样,请避免特定于供应商的扩展,以实现最大的可移植性。