Spring嵌入式数据库是否支持不同的SQL方言?

2022-09-02 19:52:22

H2具有一系列兼容模式,适用于支持不同SQL方言的各种其他数据库,例如MS SQL Server,MySQL,Oracle等。但是,在Spring中设置嵌入式数据库时,我找不到任何相应的设置。这是否意味着我必须使用“普通”SQL,而没有任何方言特定的功能,例如,如果我在生产中使用Oracle,在测试期间使用H2?我忽略了什么吗?


答案 1

哪个版本的 H2 数据库?根据文档,您可以通过SQL语句设置兼容模式(http://www.h2database.com/html/features.html#compatibility)

SET MODE PostgreSQL

只需将此语句添加到由Spring jdbc嵌入式数据库加载的第一个sql脚本文件中


答案 2

根据H2文档,Oracle兼容模式非常有限。

例如,不能使用 PL/SQL 过程。

如果您使用Spring的嵌入式数据库,则无法按原样设置兼容模式;您必须实现自己的嵌入式数据库配置器,并通过 JDBC URL 指定兼容模式(见下文)。

但是,要使用与H2和Spring兼容的模式,您只需要使用DataSource以经典的方式在JDBC URL中设置模式(因此它与Spring无关):

jdbc:h2:~/test;MODE=Oracle

如果您使用Hibernate,则必须指定Oracle方言而不是H2方言。


推荐