Java 可以使用JDBC作为RDBMS的抽象层吗?

Java 可以使用JDBC作为RDBMS的抽象层吗?,java,sql,jdbc,relational-database,abstraction,Java,Sql,Jdbc,Relational Database,Abstraction,JDBC提供了一个API,可用于连接不同的RDBMS或类似的数据存储。但是数据存储在实现上有所不同(例如SQL方言) 我的查询和语句可以在最常见的RDBMS(例如Oracle、PostgreSQL、SQL Server、MySQL)上使用JDBC吗 这个问题在两个方面让我感兴趣: *公共SQL(插入、更新、选择等) *访问元数据(获取有关表和列的信息) 我目前正在试验一个自行编写的持久性框架,并希望在其下插入一个JDBC数据存储。所以,如果我写一个JDBC数据存储适配器,如果它能在最常见的RDB

JDBC提供了一个API,可用于连接不同的RDBMS或类似的数据存储。但是数据存储在实现上有所不同(例如SQL方言)

我的查询和语句可以在最常见的RDBMS(例如Oracle、PostgreSQL、SQL Server、MySQL)上使用JDBC吗

这个问题在两个方面让我感兴趣: *公共SQL(插入、更新、选择等) *访问元数据(获取有关表和列的信息)

我目前正在试验一个自行编写的持久性框架,并希望在其下插入一个JDBC数据存储。所以,如果我写一个JDBC数据存储适配器,如果它能在最常见的RDBMS上工作,那就太好了


提前感谢

JDBC是RDBMS的抽象层

不幸的是,正如您在问题中已经认识到的,抽象是泄漏的


如果您坚持使用所有RDBMS都通用的SQL和元数据的一小部分,那么就可以了。然而,在现实中,您很可能会迅速超越这些限制。

JDBC作为RDBMS的抽象工作的程度与SQL差不多:基本查询足够兼容,但您经常会遇到只能使用特定于供应商的功能实现的需求:

  • 自动递增列
  • 寻呼
  • 国际化
  • 等等

  • 不,这是不可能的,因为它们有两个完全不同的用途

    JDBC是DBMS通信协议的抽象,而SQL是一种查询语言

    用SQL编写的查询使用该通信协议发送到服务器,然后通过该协议返回查询结果(以独立于DBMS的方式)

    在通信协议和查询之间似乎有一条模糊的界线,因为JDBCAPI还指定了从服务器(或从结果)检索元数据的调用。但实际上,司机可以自由使用任何认为合适的交通工具。这不一定需要是SQL查询