Java JDBC:数据库不可知论

Java JDBC:数据库不可知论,java,mysql,sql-server,database,jdbc,Java,Mysql,Sql Server,Database,Jdbc,JDBC在其文档中指出,它有4个连接到数据库的实现。我不太明白这4个实现的意思,我想知道JDBC真的是数据库不可知论者吗。也就是说,对于每种类型的数据库,比如MYSQL(jConnector),我是否需要“驱动程序” 我正在编写一个支持Oracle、MySQL和MSSQL的应用程序 参考: 谢谢不幸的是,所有数据库类型都需要驱动程序 如果您想真正做到数据库不可知,您需要使用JPA: 使用它的一个实现。其中最流行的是Hibernate: 不幸的是,所有数据库类型都需要驱动程序 如果您想真正做到

JDBC在其文档中指出,它有4个连接到数据库的实现。我不太明白这4个实现的意思,我想知道JDBC真的是数据库不可知论者吗。也就是说,对于每种类型的数据库,比如MYSQL(jConnector),我是否需要“驱动程序”

我正在编写一个支持Oracle、MySQL和MSSQL的应用程序

参考:


谢谢

不幸的是,所有数据库类型都需要驱动程序

如果您想真正做到数据库不可知,您需要使用JPA:

使用它的一个实现。其中最流行的是Hibernate:


不幸的是,所有数据库类型都需要驱动程序

如果您想真正做到数据库不可知,您需要使用JPA:

使用它的一个实现。其中最流行的是Hibernate:


是的,JDBCAPI与数据库无关-您只需要提供适当的驱动程序。当然,您发送的SQL不会是,除非您使用的是JDBCAPI是数据库无关的-您只需要提供适当的驱动程序。当然,您发送的SQL不会是,除非您在使用JDBC时使用了与数据库无关的API。此API的接口(连接、语句等)由目标数据库的JDBC驱动程序实现。因此,如果您使用Oracle,您将需要一个Oracle驱动程序。

当使用JDBC时,您使用的API与数据库无关。此API的接口(连接、语句等)由目标数据库的JDBC驱动程序实现。因此,如果您使用Oracle,您将需要一个Oracle驱动程序

JDBC在其文档中指出,它有4个连接到数据库的实现

不,没有。它可能表示(目前)有4个实现级别。然而,实现的数量取决于(至少)目标数据库的数量和每个数据库实现的迭代次数,两者都大大大于4

JDBC在其文档中指出,它有4个连接到数据库的实现


不,没有。它可能表示(目前)有4个实现级别。然而,实现的数量取决于(至少)目标数据库的数量和每个数据库实现的迭代次数,这两者都远远大于4。

这是一个有趣的问题。我能理解为什么它可能会误导提问者。这是一个有趣的观点。我可以理解为什么它可能会误导提出问题的人。我明白这一点,但我不明白,如果它需要一个驱动程序,那么它怎么可能是数据库不可知的呢?我不明白那部分。谢谢你的回答,这只是一个简单的解释。API不关心您使用什么数据库,但您需要让您的数据库理解API,这就是为什么您需要驱动程序。SQL for MySQL、Oracle和MS SQL之间也存在差异。JPA帮助你解决这些问题。您的JPA仍然需要特定的方言(但您不必更改代码)。谢谢,感谢您的回答。我知道这一点,但我没有得到,如果它需要一个驱动程序,那么它怎么可能是数据库不可知的呢?我不明白那部分。谢谢你的回答,这只是一个简单的解释。API不关心您使用什么数据库,但您需要让您的数据库理解API,这就是为什么您需要驱动程序。SQL for MySQL、Oracle和MS SQL之间也存在差异。JPA帮助你解决这些问题。您的JPA仍然需要特定的方言(但您不必更改代码)。谢谢,感谢您的回答。我有点明白您的意思,但添加少量代码来完成有限或可忽略的工作(JDBC)似乎很愚蠢。在.NET中,与DB的连接和交互完全取决于“驱动程序”。没有“假定”不可知论的层。我不明白。只需删除JDBC并告诉我使用“驱动程序”。我有点理解你的意思,但添加少量代码来完成有限或可忽略的工作(JDBC)似乎很愚蠢。在.NET中,与DB的连接和交互完全取决于“驱动程序”。没有“假定”不可知论的层。我不明白。只需删除JDBC并告诉我使用“驱动程序”。