唐磊的个人博客

JDBC的4种驱动类型


今天看金杰的课件,JDBC的4种驱动类型,啥,不懂。google了下。明白真相了:
Java中的JDBC驱动可以分为四种类型,包括JDBC-ODBC桥、本地API驱动、网络协议驱动和本地协议驱动。(课件上如是说:JDBC-ODBC桥驱动+纯Java驱动+本地API部分Java驱动+JDBC网络纯Java驱动)。

下面内容整理自网络:

1、JDBC-ODBC bridge plus ODBC driver(JDBC-ODBC桥):JDBC-ODBC 桥 是sun公司提供的,是jdk提供的的标准API.

This combination provides JDBC access via ODBC drivers. ODBC binary code–and in many cases, database client code– must be loaded on each client machine that uses a JDBC-ODBC Bridge. Sun provides a JDBC-ODBC Bridge driver, which is appropriate for experimental use and for situations in which no other driver is available.


这种类型的驱动实际是把所有 JDBC的调用传递给ODBC ,再由ODBC调用本地数据库驱动代码.( 本地数据库驱动代码是指 由数据库厂商提供的数据库操作二进制代码库,例如在oracle for windows中就是oci dll 文 件)。只要本地机装有相关的ODBC驱动那么采用JDBC-ODBC桥几乎可以访问所有的数据库,JDBC- ODBC方法对于客户端已经具备ODBC driver的应用还是可行的.但是,由于JDBC-ODBC先调用 ODBC再由ODBC去调用本地数据库接口访问数据库.所以,执行效率比较低,对于那些大数据量 存取的应用是不适合的.而且,这种方法要求客户端必须安装ODBC 驱动,所以对于基于 internet ,intranet的应用也是不合适的.因为,你不可能要求所有客户都能找到ODBC driver.



  1. 2、Native-API partly-Java driver(本地API部分JAVA驱动):本地API驱动直接把JDBC调用转变为数据库的标准调用再去访问数据库.



  1. A native-API partly Java technology-enabled driver: This type of driver converts JDBC calls into calls on the client API for Oracle, Sybase, Informix, DB2, or other DBMS. Note that, like the bridge driver, this style of driver requires that some binary code be loaded on each client machine.






  1. 这种方法需要本地 数据库驱动代码. 本地API驱动 | 厂商DB代码—————数据库Server 这种驱动比起JDBC-ODBC桥执行效率大大提高了.但是,它仍然需要在客户端加载数据库厂商 提供的代码库.这样就不适合基于internet的应用.并且,他的执行效率比起3,4型的JDBC驱动 还是不够高.

<ol style="padding-left: 30px;">
  <div id="_mcePaste">
    <strong>3、Pure Java Driver for Database Middleware(纯JAVA网络协议驱动):</strong>有中间件的参与
  </div>
</ol>

<div>
  <em> net-protocol fully Java technology-enabled driver ,This style of driver translates JDBC calls into the middleware vendor&#8217;s protocol, which is then translated to a DBMS protocol by a middleware server. The middleware provides connectivity to many different databases.</em>
</div>

<ol style="padding-left: 30px;">
  <div id="_mcePaste">
    <div id="_mcePaste">
      这种驱动实际上是根据我们熟悉的三层结构建立的. JDBC先把对数局库的访问请求传递给网 络上的中间件服务器. 中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用 传给数据库服务器.如果中间件服务器也是用java开法的,那么在在中间层也可以使用1,2型 JDBC驱动程序作为访问数据库的方法. 网络协议驱动&#8212;&#8212;&#8212;中间件服务器&#8212;&#8212;&#8212;&#8212;数据库Server。由于这种驱动是基于server的.所以,它不需要在客户端加载数据库厂商提供的代码库.而且 他在执行效率和可升级性方面是比较好的.因为大部分功能实现都在server端,所以这种驱动 可以设计的很小,可以非常快速的加载到内存中. 但是,这种驱动在中间件层仍然需要有配置 其它数据库驱动程序,并且由于多了一个中间层传递。
    </div>

    <div id="_mcePaste">
      <strong>4、Direct-to-Database Pure Java Driver(本地纯JAVA协议驱动):</strong>直接把JDBC调用转换为符合相关数据库系统规范的请求
    </div>

    <p>
      <em>native-protocol fully Java technology-enabled driver。This style of driver converts JDBC calls into the network protocol used directly by DBMSs, allowing a direct call from the client machine to the DBMS server and providing a practical solution for intranet access.</em>
    </p>

    <div id="_mcePaste">
      <div id="_mcePaste">
        由于4型驱动写的应用可 以直接和数据库服务器通讯.这种类型的驱动完全由java实现,因此实现了平台独立性. 本地协议驱动&#8212;&#8212;&#8212;数据库Server。由于这种驱动不需要先把JDBC的调用传给ODBC或本地数据库接口或者是中间层服务器.所 以它的执行效率是非常高的.而且,它根本不需要在客户端或服务器端装载任何的软件或驱动. 这种驱动程序可以动态的被下载.但是对于不同的数据库需要下载不同的驱动程序.
      </div>

      <div id="_mcePaste">
        <div id="_mcePaste">
          <strong>总结:</strong>
        </div>

        <div id="_mcePaste">
          以上对四种类型的JDBC驱动做了一个说明.那么它们适合那种类型的应用开发呢?
        </div>

        <div id="_mcePaste">
          JDBC-ODBC桥由于它的执行效率不高,更适合做为开发应用时的一种过度方案,或着对于初学 者了解JDBC编程也较适用. 对于那些需要大数据量操作的应用程序则应该考虑2,3,4型驱动.在intranet方面的应用可以 考虑2型驱动,但是由于3,4型驱动在执行效率上比2型驱动有着明显的优势,而且目前开发 的趋势是使用纯java.所以3,4型驱动也可以作为考虑对象. 至于基于internet方面的应用就只有考虑3,4型驱动了. 因为3型驱动可以把多种数据库驱 动都配置在中间层服务器.所以3型驱动最适合那种需要同时连接多个不同种类的数据库, 并且对并发连接要求高的应用. 4型驱动则适合那些连接单一数据库的工作组应用。
        </div>
      </div>
    </div>
  </div>
</ol>
tanglei wechat
欢迎扫码加入互联网大厂内推群 & 技术交流群,一起学习、共同进步