Java 可以使用JDBC作为RDBMS的抽象层吗?
JDBC提供了一个API,可用于连接不同的RDBMS或类似的数据存储。但是数据存储在实现上有所不同(例如SQL方言) 我的查询和语句可以在最常见的RDBMS(例如Oracle、PostgreSQL、SQL Server、MySQL)上使用JDBC吗 这个问题在两个方面让我感兴趣: *公共SQL(插入、更新、选择等) *访问元数据(获取有关表和列的信息) 我目前正在试验一个自行编写的持久性框架,并希望在其下插入一个JDBC数据存储。所以,如果我写一个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是RDBMS的抽象层 不幸的是,正如您在问题中已经认识到的,抽象是泄漏的
如果您坚持使用所有RDBMS都通用的SQL和元数据的一小部分,那么就可以了。然而,在现实中,您很可能会迅速超越这些限制。JDBC作为RDBMS的抽象工作的程度与SQL差不多:基本查询足够兼容,但您经常会遇到只能使用特定于供应商的功能实现的需求:
- 自动递增列
- 寻呼
- 国际化
- 等等
不,这是不可能的,因为它们有两个完全不同的用途 JDBC是DBMS通信协议的抽象,而SQL是一种查询语言 用SQL编写的查询使用该通信协议发送到服务器,然后通过该协议返回查询结果(以独立于DBMS的方式) 在通信协议和查询之间似乎有一条模糊的界线,因为JDBCAPI还指定了从服务器(或从结果)检索元数据的调用。但实际上,司机可以自由使用任何认为合适的交通工具。这不一定需要是SQL查询