Type 1, 2, 3, and 4 JDBC Driver in Java

A JDBC driver is a software component enabling a Java application to interact with a database.[1] JDBC drivers are analogous to ODBC drivers, ADO.NET data providers, and OLE DB providers. To connect with individual databases, JDBC (the Java Database Connectivity API) requires drivers for each database. The JDBC driver gives out the connection to the database and implements the protocol for transferring the query and result between the client and the database. It acts as a middle layer interface between java applications and databases. 

 There are 4 types of JDBC drivers:

Type-1 driver or JDBC-ODBC bridge driver

Type-1 jdbc driver


The JDBC type 1 driver, also known as the JDBC-ODBC bridge, is a database driver implementation that employs the ODBC driver to connect to the database. The driver converts JDBC method calls into ODBC function calls.

The driver is platform-dependent as it makes use of ODBC which in turn depends on native libraries of the underlying operating system the JVM is running upon. Also, the use of this driver leads to other installation dependencies; for example, ODBC must be installed on the computer having the driver and the database must support an ODBC driver.

The use of this driver is discouraged if the alternative of a pure-Java driver is available. The other implication is that any application using a type 1 driver is non-portable given the binding between the driver and platform. This technology isn't suitable for a high-transaction environment. Type 1 drivers also don't support the complete Java command set and are limited by the functionality of the ODBC driver.

Advantages

Almost any database for which an ODBC driver is installed can be accessed, and data can be retrieved.

Disadvantages

Performance overhead since the calls have to go through the JDBC( java database connectivity) bridge to the ODBC(open database connectivity) driver, then to the native database connectivity interface (thus may be slower than other types of drivers).

The ODBC driver needs to be installed on the client machine. Not suitable for applets, because the ODBC driver needs to be installed on the client.

Specific ODBC drivers are not always available on all platforms; hence, the portability of this driver is limited.

No support from JDK 1.8 (Java 8).

Type-2 driver or Native-API driver

Type-2 jdbc driver


The JDBC type 2 driver, also known as the Native-API driver, is a database driver implementation that uses the client-side libraries of the database. The driver converts JDBC method calls into native calls of the database API. For example, the Oracle OCI driver is a Type 2 driver.

Advantages

No implementation of the JDBC-ODBC bridge, it may be considerably faster than a Type 1 driver.

Disadvantages

  • Type-1 driver or JDBC-ODBC bridge driver
  • The vendor-client library needs to be installed on the client machine.
  • Not all databases have a client-side library.
  • This driver is platform dependent.
  • This driver supports all Java applications except applets.

Type-3 driver or Network Protocol driver

Type-3 jdbc driver


The JDBC type 3 driver, also known as the Pure Java driver for database middleware, is a database driver implementation that makes use of a middle tier between the calling program and the database. The middle-tier (application server) converts JDBC calls directly or indirectly into a vendor-specific database protocol.

This differs from the type 4 driver in that the protocol conversion logic resides not at the client, but in the middle-tier. Like type 4 drivers, the type 3 driver is written entirely in Java.

The same client-side JDBC driver may be used for multiple databases. It depends on the number of databases the middleware has been configured to support. The type 3 driver is platform-independent as the platform-related differences are taken care of by the middleware. Also, making use of the middleware provides additional advantages of security and firewall access.

Working Mechanism

Sends JDBC API calls to a middle-tier net server that translates the calls into the DBMS-specific network protocol. The translated calls are then sent to a particular DBMS.

Follows a three-tier communication approach.

Can interface to multiple databases – Not vendor-specific.

The JDBC Client driver written in java communicates with a middleware-net-server using a database-independent protocol, and then this net server translates this request into database commands for that database.

Thus the client driver to middleware communication is database independent.

Advantages

  • The communication between the client and the middleware server is database-independent, hence there is no need for the database vendor library on the client. The client need not be changed for a new database.
  • The middleware server (which can be a full-fledged J2EE application server) can provide typical middleware services like caching (of connections, query results, etc.), load balancing, logging, and auditing.
  • A single driver can handle any database, provided the middleware supports it.

Disadvantages

Requires database-specific coding to be done in the middle tier. The middleware layer added may result in additional latency, but is typically overcome by using better middleware services.

Type-4 driver or Thin driver

Type-4 jdbc driver


The JDBC type 4 driver, also known as the Direct to Database Pure Java Driver, is a database driver implementation that converts JDBC calls directly into a vendor-specific database protocol.

Written completely in Java, type 4 drivers are thus platform-independent. They install inside the Java Virtual Machine of the client. This provides better performance than the type 1 and types 2 drivers as it does not have the overhead of conversion of calls into ODBC or database API calls. Unlike the type 3 drivers, it does not need associated software to work.

As the database protocol is vendor-specific, the JDBC client requires separate drivers, usually vendor-supplied, to connect to different types of databases.

Advantages

  • Completely implemented in Java to achieve platform independence.
  • These drivers don't translate the requests into an intermediary format (such as ODBC).
  • The client application connects directly to the database server. No translation or middleware layers are used, improving performance.
  • The JVM can manage all aspects of the application-to-database connection; this can facilitate debugging.

Disadvantages

Drivers are database specific, as different database vendors use widely different (and usually proprietary) network protocols.

When to use the Driver

If you are accessing one type of database, such as Oracle, Sybase, or IBM, the preferred driver type is type-4.

If your Java application is accessing multiple types of databases at the same time, type 3 is the preferred driver.

Type 2 drivers are useful in situations, where a type 3 or type 4 driver is not available yet for your database.

The type 1 driver is not considered a deployment-level driver and is typically used for development and testing purposes only.

In this article, we have seen Type 1, 2, 3, and 4 JDBC drivers in Java.