`
log_cd
  • 浏览: 1100272 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JDBC驱动类型的区别

阅读更多
  1. jdbc-odbc桥:将JDBC调用转换到ODBC调用。
  2. 本地api驱动:将JDBC调用转换到特定的DBMS调用。
  3. 网络协议驱动:将JDBC调用转换成与DBMS无关的网络协议,然后再转换成特定的DBMS协议。
  4. 本地协议驱动:将JDBC调用直接转换成特定DBMS协议。

一、jdbc-odbc桥
   
    JDBC-ODBC桥加ODBC驱动程序,JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。注意, 必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。这种类型的驱动程序最适合于企业网(这种网络上客户机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。
    Application--->JDBC-ODBC Bridge(Type1 jdbc driver)---->JDBC-ODBC Library--->ODBC Driver-->Database
    只要本地机装有相关的odbc驱动那么采用jdbc-odbc桥几乎可以访问所有的数据库,jdbc- odbc方法对于客户端已经具备odbc driver的应用还是可行的。适用于快速的原型系统,没有提供JDBC驱动的数据库如Access。
     但是,由于jdbc-odbc先调用 odbc再由odbc去调用本地数据库接口访问数据库.所以,执行效率比较低,对于那些大数据量 存取的应用是不适合的.而且,这种方法要求客户端必须安装odbc 驱动,所以对于基于 internet ,intranet的应用也是不合适的。

二、本地Api驱动:JAVA to Native API

    这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。
    Application--->JDBC Driver(Type2 jdbc driver)---->Native Database library---->Database利用开发商提供的本地库来直接与数据库通信。本地api驱动直接把jdbc调用转变为数据库的标准调用再去访问数据库。

三、网络协议驱动:Java to net

    这种驱动程序将JDBC转换为与DBMS无关的网络协议,这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。
   
    Application--->Jdbc Driver(Type3 jdbc driver)----->java middleware--->JDBC Driver---->Database
    jdbc先把对数局库的访问请求传递给网络上的中间件服务器. 中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用传给数据库服务器.如果中间件服务器也是用java开发的,那么在在中间层也可以使用1,2型 jdbc驱动程序作为访问数据库的方法。
     由于这种驱动是基于server的.所以,它不需要在客户端加载数据库厂商提供的代码库.而且 他在执行效率和可升级性方面是比较好的.因为大部分功能实现都在server端,所以这种驱动 可以设计的很小,可以非常快速的加载到内存中. 但是,这种驱动在中间件层仍然需要有配置 其它数据库驱动程序,并且由于多了一个中间层传递数据,它的执行效率还不是最好。

四、本地协议驱动:JAVA to native dababase

    这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。
    Application--->Jdbc driver(type4 jdbc driver)----->database engine--->database
    这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求.由于4型驱动写的应用可以直接和数据库服务器通讯.这种类型的驱动完全由java实现,因此实现了平台独立性。最高的性能,通过自己的本地协议直接与数据库引擎通信,具备在Internet装配的能力。

附Oracle JDBC Drivers is illustrated :
Oracle provides four different types of JDBC drivers, for use in different deployment scenarios. The 10.1.0 drivers can access Oracle 8.1.7 and higher. While all Oracle JDBC drivers are similar, some features apply only to JDBC OCI drivers and some apply only to the JDBC Thin driver.
      JDBC OCI client-side driver: This is a JDBC Type 2 driver that uses Java native methods to call entrypoints in an underlying C library. That C library, called OCI (Oracle Call Interface), interacts with an Oracle database. The JDBC OCI driver requires an Oracle client installation of the same version as the driver.
      The use of native methods makes the JDBC OCI driver platform specific. Oracle supports Solaris, Windows, and many other platforms. This means that the Oracle JDBC OCI driver is not appropriate for Java applets, because it depends on a C library.
       Starting from 10.1.0, the JDBC OCI driver is available for install with the OCI Instant Client feature, which does not require a complete Oracle client-installation. Please refer to Oracle Call Interface for more information.
       JDBC Thin client-side driver: This is a JDBC Type 4 driver that uses Java to connect directly to Oracle. It implements Oracle's SQL*Net Net8 and TTC adapters using its own TCP/IP based Java socket implementation. The JDBC Thin driver does not require Oracle client software to be installed, but does require the server to be configured with a TCP/IP listener.
      Because it is written entirely in Java, this driver is platform-independent. The JDBC Thin driver can be downloaded into any browser as part of a Java application. (Note that if running in a client browser, that browser must allow the applet to open a Java socket connection back to the server.)
     JDBC Thin server-side driver: This is another JDBC Type 4 driver that uses Java to connect directly to Oracle. This driver is used internally within the Oracle database. This driver offers the same functionality as the client-side JDBC Thin driver (above), but runs inside an Oracle database and is used to access remote databases. 
     Because it is written entirely in Java, this driver is platform-independent. There is no difference in your code between using the Thin driver from a client application or from inside a server.

连接方式有以下几种:

Oralce provides four types of JDBC driver.

  Thin Driver, a 100% Java driver for client-side use without an Oracle installation, particularly with applets. The Thin driver type is thin. To connect user scott with password tiger to a database with SID (system identifier) orcl through port 1521 of host myhost, using the Thin driver, you would write :
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@myhost:1521:orcl", "scott", "tiger");

OCI Driver for client-side use with an Oracle client installation. The OCI driver type is oci. To connect user scott with password tiger to a database with SID (system identifier) orcl through port 1521 of host myhost, using the OCI driver, you would write :
Connection conn = DriverManager.getConnection
("jdbc:oracle:oci:@myhost:1521:orcl", "scott", "tiger");

Note that you can also specify the database by a TNSNAMES entry. You can find the available TNSNAMES entries listed in the file tnsnames.ora on the client computer from which you are connecting. For example, if you want to connect to the database on host myhost as user scott with password tiger that has a TNSNAMES entry of MyHostString, enter:
Connection conn = DriverManager.getConnection
("jdbc:oracle:oci8:@MyHostString","scott","tiger");

If your JDBC client and Oracle server are running on the same machine, the OCI driver can use IPC (InterProcess Communication) to connect to the database instead of a network connection. An IPC connection is much faster than a network connection.
Connection conn = DriverManager.getConnection
("jdbc:oracle:oci8:@","scott","tiger");

Server-Side Thin Driver, which is functionally the same as the client-side Thin driver, but is for code that runs inside an Oracle server and needs to access a remote server, including middle-tier scenarios. The Server-Side Thin driver type is thin and there is no difference in your code between using the Thin driver from a client application or from inside a server.
Server-Side Internal Driver for code that runs inside the target server, that is, inside the Oracle server that it must access. The Server-Side Internal driver type is kprb and it actually runs within a default session. You are already "connected". Therefore the connection should never be closed.
To access the default connection, write:
DriverManager.getConnection("jdbc:oracle:kprb:");
or:
DriverManager.getConnection("jdbc:default:connection:");

You can also use the Oracle-specific defaultConnection() method of the OracleDriver class which is generally recommended:
OracleDriver ora = new OracleDriver();
Connection conn = ora.defaultConnection();

Note: You are no longer required to register the OracleDriver class for connecting with the Server-Side Internal driver, although there is no harm in doing so. This is true whether you are using getConnection() or defaultConnection() to make the connection.
Any user name or password you include in the URL string is ignored in connecting to the server default connection. The DriverManager.getConnection() method returns a new Java Connection object every time you call it. Note that although the method is not creating a new physical connection (only a single implicit connection is used), it is returning a new object.
Again, when JDBC code is running inside the target server, the connection is an implicit data channel, not an explicit connection instance as from a client. It should never be closed.
分享到:
评论

相关推荐

    Oracle12C JDBC 驱动

    Oracle JDBC驱动分为四种类型: 1. ** Thin Driver**:也称为类型4驱动,是一个纯Java实现,无需中间层软件,直接与数据库通信。它是轻量级的,适合互联网应用。 2. ** Shared Server Mode Driver**:或类型3驱动,...

    access的jdbc驱动

    Access的JDBC驱动是Java数据库连接(Java Database Connectivity, JDBC)的一种实现,它允许Java程序与Microsoft Access数据库进行交互。在JDK 1.8之后,Oracle公司不再默认提供对ODBC(Open Database Connectivity...

    oracle12 jdbc驱动包

    JDBC驱动主要有四种类型:类型1、类型2、类型3和类型4。Oracle 12c JDBC驱动通常属于类型4,即纯Java驱动,它无需中间件即可与数据库通信,提供高效、高性能的连接。 Oracle 12c JDBC驱动包通常包含以下组件: 1. ...

    sybase 数据库 jdbc 驱动下载

    1. **导入JDBC驱动**:在Java项目中,需要将`jconn4-7.5.jar`添加到类路径中。 2. **加载驱动**:使用`Class.forName()`方法加载JDBC驱动。 3. **创建连接**:通过`DriverManager.getConnection()`方法建立与Sybase...

    达梦数据库JDBC驱动包合集包含MYSQL驱动包

    本篇将详细介绍达梦数据库JDBC驱动包及其在与MySQL数据库交互中的作用。首先,我们需要了解JDBC(Java Database Connectivity),它是Java语言连接数据库的标准接口,由Oracle公司开发,使得Java开发者能够通过标准...

    impala数据库JDBC驱动集

    JDBC驱动分为几种类型,如Type 1、Type 2、Type 3和Type 4,其中Type 4是纯Java实现的,直接与数据库通信,通常效率更高且更易于跨平台。 要使用Impala的JDBC驱动,首先需要在Java项目中添加对应的JAR文件,这在...

    加载同一类型但是版本不同JDBC驱动

    在标题所提及的场景中,“加载同一类型但版本不同JDBC驱动”就是解决此类问题的关键。 当应用程序需要同时连接到多个相同类型的数据库,例如Oracle 11g和Oracle 19c,而这两个版本的JDBC驱动并不完全兼容时,我们...

    jdbc驱动jar包.zip

    4. Type 4(直连纯Java驱动):这是最新的JDBC驱动类型,也是性能最好的。它们使用原生的数据库协议与数据库服务器直接通信,如MySQL Connector/J,完全用Java编写,没有平台依赖性。 在Java项目中,使用JDBC驱动...

    sql server 2000 jdbc 驱动

    首先,我们来了解一下JDBC驱动的类型。在Java中,有四种类型的JDBC驱动: 1. **Type 1 ( JDBC-ODBC Bridge)**:这是最早的驱动,它通过ODBC桥接器间接与数据库通信,性能较低。 2. **Type 2 (Native-API Partial ...

    sqlserver2005-jdbc驱动、sqlserver2008-jdbc驱动、mysql-jdbc驱动、oracle驱动-

    - Oracle JDBC驱动包括了多种类型,如 Thin 驱动、Thin No-Login 驱动、OCI 驱动等。其中,Thin驱动是一个轻量级的Type 4驱动,适用于网络环境,而OCI驱动则需要Oracle客户端库,适合本地环境。 - Oracle JDBC驱动...

    最新Oracle_11g JDBC驱动包

    1. **加载驱动**:在Java程序中,首先需要通过`Class.forName()`方法加载相应的JDBC驱动类。 2. **建立连接**:使用`DriverManager.getConnection()`方法,传入数据库URL、用户名和密码来建立连接。 3. **创建...

    sql server2008 jdbc驱动

    1. **JDBC驱动类型**: JDBC驱动主要有四种类型:类型1(JDBC-ODBC桥接),类型2(部分Java驱动),类型3(纯Java网络驱动),以及类型4(纯Java数据库连接驱动)。SQL Server 2008 JDBC驱动属于类型4,它是一个...

    mysql8.0jdbc驱动.zip

    在Java应用中,JDBC驱动使得开发者能够充分利用MySQL 8.0的新特性,如JSON列类型、窗口函数、增强的性能和安全性。同时,MySQL 8.0 JDBC驱动也支持连接池,这在高并发场景下提高了性能和资源利用率。 总的来说,...

    数据库JDBC驱动程序包

    Oracle提供两种类型的JDBC驱动: Thin驱动和 Thick驱动。Thin驱动是一个纯Java实现,无需Oracle客户端软件;Thick驱动则需要Oracle客户端。这些驱动使得Java应用可以高效地与Oracle数据库进行交互。 4. **Access ...

    mysql5.7.20的jdbc驱动

    本文将详细探讨“mysql5.7.20的jdbc驱动”这一主题,包括其重要性、功能、版本兼容性以及如何在Java项目中使用。 首先,MySQL 5.7.20 JDBC驱动程序是Java应用程序连接到MySQL数据库的关键组件。它提供了Java API,...

    TDengine jdbc驱动包

    TDengine jdbc驱动包

    常用数据库jdbc驱动

    Oracle 10g提供了两种类型的JDBC驱动: Thin 驱动和 Thick 驱动。Thin驱动是一种纯Java驱动,无需Oracle客户端即可直接连接到数据库,适合于分布式环境。Thick驱动则包含了Oracle的本地代码,提供了更高效的数据传输...

    各种常用数据库的jdbc驱动类(解压后 直接导包使用 )

    本资源“各种常用数据库的jdbc驱动类(解压后 直接导包使用 )”包含了一系列主流数据库的JDBC驱动,使得开发者无需自行编译或寻找,即可直接导入项目使用,极大地简化了开发流程。 首先,JDBC驱动主要分为四种类型...

    神通数据库JDBC驱动包

    JDBC驱动程序分为四种类型:Type 1、Type 2、Type 3和Type 4,神通数据库的JDBC驱动属于Type 4,即纯Java的网络驱动,无需依赖数据库供应商的本地库,提高了跨平台兼容性和性能。 oscarJDBC.jar文件包含了神通...

    神州通用数据库JDBC驱动和手册

    《神通通用数据库JDBC驱动与手册详解》 神通通用数据库是一款在中国广泛应用的数据库管理系统,它提供了高效、稳定的数据存储和处理能力。在Java应用程序中,我们通常会利用Java Database Connectivity(JDBC)技术...

Global site tag (gtag.js) - Google Analytics