1
3
假设表名和列在这两者之间是相同的,您应该能够使用相同的名称
如果两者之间有细微的名称差异,那么我将创建两组映射文件—每个数据库服务器一个—并将它们打包到单独的JAR中(例如
|
2
3
如果db实现必须是不同的,那么您必须执行@matt建议的操作。 |
3
3
我曾经开发过一个支持很多数据库的应用程序(Oracle、Informix、SQL Server、MySQL)。我们有一个配置文件和一组映射。我们将jndi用于数据库连接,因此不必在应用程序中处理不同的连接URL。当初始化SessionFactory时,我们有一个从底层连接推断数据库类型的方法。例如,通过JNDI手动获取连接,然后使用connection.getMetaData().getDatabaseProductName()查找数据库是什么。还可以使用容器环境变量显式设置它。然后使用configuration.setProperty(Environment.dialogue,deliveredDialect)设置方言,并将SessionFactory初始化为正常。 一些你必须处理的事情:
|
4
3
此处有一个表映射了Oracle和SQLServer之间的差异: http://psoug.org/reference/sqlserver.html 在我看来,最大的陷阱是: 1) 日期。功能和机制完全不同。您必须为每个数据库使用不同的代码。 2) 密钥生成—Oracle和SQLServer使用不同的机制,如果您试图通过拥有自己的密钥表来避免“本机”生成—那么,您只是完全序列化了所有“插入”。对性能不好。 4) Oracle区分大小写,SQLServer不区分大小写。你得小心点。 还有很多:) 编写将在两个DBs上运行的SQL代码是一项挑战。有时,让它变快几乎是不可能的。 |
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
SoT · SQL Server中求和函数的工作方式 2 年前 |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |