谁能告诉我jdbc是如何工作的?它如何设法与DBMS通信?因为DBMS可能用其他编程语言编写。
答案 0 :(得分:9)
与数据库的通信由JDBC驱动程序处理,JDBC驱动程序可以使用各种策略与数据库“对话”(从“翻译”到使用“本机”语言)。根据所使用的策略,驱动程序分为4种类型。 Types of JDBC technology drivers提供了对每个人的良好描述:
JDBC-ODBC桥通过一个或多个ODBC提供JDBC API访问 驱动程序。请注意一些ODBC原生 代码,在很多情况下是本机数据库 必须在每个上加载客户端代码 使用此类型的客户端计算机 驱动程序。因此,这种驱动程序是 通常最合适的时候 自动安装和下载 Java技术应用程序是 不重要。有关的信息 提供的JDBC-ODBC桥驱动程序 Sun,请参阅JDBC-ODBC Bridge Driver。
本机API部分支持Java技术的驱动程序转换 JDBC调用客户端上的调用 适用于Oracle,Sybase,Informix,DB2的API , 或其他DBMS。请注意,像 桥司机,这种风格的司机 需要一些二进制代码 加载到每台客户端计算机上。
启用了网络协议的完全支持Java技术的驱动程序 JDBC API调用独立于DBMS 然后翻译的网络协议 服务器的DBMS协议。这个 网络服务器中间件能够 连接所有的Java 基于技术的客户对很多人而言 不同的数据库具体 使用的协议取决于供应商。 一般来说,这是最灵活的 JDBC API替代方案。这有可能 这个解决方案的所有供应商都会 提供适合Intranet的产品 使用。为了这些产品 他们还必须支持互联网接入 处理额外的要求 安全性,通过防火墙访问, 网络强加的等等。一些 供应商正在添加JDBC 以技术为基础的驱动力 现有的数据库中间件产品。
- 醇>
启用本机协议的完全支持Java技术的驱动程序 JDBC技术调用网络 DBMS直接使用的协议。这个 允许来自客户端的直接呼叫 机器到DBMS服务器并且是一个 Intranet的实用解决方案 访问。由于这些协议很多 是数据库供应商专有的 他们自己将是主要来源 对于这种风格的驱动程序。一些 数据库供应商有这些 进展。
正如我们所看到的,有各种策略可以实现互操作性,包括实现Java中给定数据库使用的网络协议(类型4)。而且由于它们的易用性(没有额外的东西可以安装,没有JNI)和它们的良好性能(它们的性能与现在的2型驱动程序一样),4型实际上是现在最常用的。
答案 1 :(得分:7)
来自Wikipedia:
JDBC驱动程序是客户端适配器(安装在客户端上) 从Java程序转换请求的机器,而不是在服务器上 到DBMS可以理解的协议。 [编辑]类型
大多数关系都有商业和免费驱动程序 数据库服务器这些驱动程序属于以下类型之一:
- 类型1,调用本地可用ODBC驱动程序的本机代码。
- 在客户端调用数据库供应商本机库的类型2。然后,此代码通过网络与数据库进行通信。
- Type 3,与服务器端中间件进行通信的纯java驱动程序,然后与数据库进行通信
- Type 4,使用数据库本机协议的纯java驱动程序
答案 2 :(得分:2)
大多数数据库系统都支持ODBC(开放式数据库连接或其他)。这意味着允许应用程序(例如,Access)以牺牲一些性能为代价来使用多个RDBMS实现。首次发布JDBC时,有一个驱动程序允许您连接到ODBC提供程序。稍后,一些供应商提供了特定于其RDMS的JDBC驱动程序。
从开发人员的角度来看,JDBC被用作一组接口。加载驱动程序时隐藏所有实际细节。驱动程序是一个Java类,可以使用本书的任何技巧,包括本机代码或只是将网络流量发送到RDBMS。
答案 3 :(得分:1)
类型
There are commercial and free drivers available for most relational database servers. These drivers fall into one of the following types:
Type 1 that calls native code of the locally available ODBC driver.
Type 2 that calls database vendor native library on a client side. This code then talks to database over network.
Type 3, the pure-java driver that talks with the server-side middleware that then talks to database
Type 4, the pure-java driver that uses database native protocol
答案 4 :(得分:1)
阅读four types of JDBC drivers可能会启发你。
答案 5 :(得分:1)
来自维基百科:
JDBC是Java编程语言的API,用于定义客户端如何访问数据库。它提供了查询和更新数据库中数据的方法。 JDBC面向关系数据库。
JDBC首先在Java 2平台标准版1.1版(J2SE)中引入,并与JDBC-to-ODBC桥接器一起引用,从而实现与JVM主机环境中任何ODBC可访问数据源的连接。 / p>
如果不深入细节,您可以将JDBC视为一个抽象层,让您可以与不同的数据库进行通信。特定于实现的细节对您是隐藏的,但查询数据库(无论是MySQL还是Oracle或其他)的接口是相同的。
这意味着将来如果有新的数据库,有人只需要使用现有的界面。方法名称将相同,但方法将包含该特定数据库的特定于实现的代码。这是一种常见的软件工程模式。
包含特定于实现的代码的实体称为JDBC driver。 JDBC驱动程序提供与数据库的连接,它还实现了将查询发送到数据库并将结果集发送回客户端的特定协议。
答案 6 :(得分:0)
不能说我知道你问题的确切答案,但这里有一些信息可以提供帮助。
这是一个很好的起点:
http://java.sun.com/products/jdbc/overview.html
JDBC API包含两组主要的接口:第一组是应用程序编写者的JDBC API,第二组是驱动程序编写者的低级JDBC驱动程序API。
JDBC驱动程序开发人员的信息。基本上,开发人员实现了一组接口,以便为特定的DBMS创建JDBC驱动程序。
http://java.sun.com/products/jdbc/driverdevs.html
就DBMS用不同的语言编写而言。 DBMS最有可能暴露一些API(以各种语言和/或格式),允许驱动程序(如JDBC)与DBMS进行通信。