Different types of JDBC drivers in Java - Quick overview
How many types of JDBC drivers in Java is a classical JDBC interview question ,
though I have not see this question recently but it was very popular
during 2006 - 2008 period and still asked mostly on Junior programmer
level interviews. There are mainly 4 types of JDBC drivers in Java,
those are referred as type 1 to type 4 jdbc drivers. I agree its easy to
remember them by type rather than with there actual name, Which I have
yet to get in memory except plain old JDBC-ODBC bridge driver. By the
way here are there full names :
Type 1 JDBC Driver is called JDBC-ODBC Bridge driver (bridge driver)
Type 2 JDBC Driver is referred as Native-API/partly Java driver (native driver)
Type 3 JDBC Driver is called AllJava/Net-protocol driver (middleware driver)
Type 4 JDBC Driver is called All Java/Native-protocol driver (Pure java driver)
This JDBC tutorial is in continuation of my earlier tutorials in JDBC like How to connect to Oracle database using JDBC
and 4 tips to improve performance of JDBC applications. If you are new here and haven't read them already, Its worth looking. Anyway out of all those 4 types, JDBC-ODBC Bridge driver is most common for connecting SQL Server, MS Access and mostly on training and development. here are quick review of all these four types of JDBC drivers. Also there has been some speculation of type 5 JDBC driver, I have to yet to see it.
and 4 tips to improve performance of JDBC applications. If you are new here and haven't read them already, Its worth looking. Anyway out of all those 4 types, JDBC-ODBC Bridge driver is most common for connecting SQL Server, MS Access and mostly on training and development. here are quick review of all these four types of JDBC drivers. Also there has been some speculation of type 5 JDBC driver, I have to yet to see it.
JDBC ODBC Bridge Driver or Type 1 JDBC driver

Native-API/partly Java driver or Type 2 JDBC driver
This is also called type 2 driver
and its slightly better than type 1 JDBC driver. type 2 JDBC driver
convert JDBC calls into database calls by using native API provided by
database. This driver is database specific so once you switch from one
database to another you need to change type 2 JDBC driver. performance
is better than JDBC-ODBC bridge driver
since communication layer is reduced. type 2 JDBC driver requires
database native library to be available on client but it poses several
version and compatibility issue. This was liked by Database vendors
though because they can reuse there existing native libraries.
AllJava/Net-protocol driver or Type 3 JDBC driver
both
type 1 and type 2 JDBC drivers were not written in Java so there was
need for pure Java JDBC driver to resolve portability issue. type 3 JDBC
driver comes with pure java implementation (that's why All Java word )
but it uses 3 tier architecture where you have a Java client and Java
Server which talk with Net protocol and Server speaking to database.
type 3 JDBC driver never get popular among database vendors as it was
costly for them to rewrite there existing native database library which
was mainly on C and C++.
All Java/Native-protocol driver or Type 4 JDBC driver
type 4 JDBC driver is most popular among all four types of JDBC driver.
it has not only implemented in Java but also incorporates all database
call in single driver. It was pretty easy to use and deploy as well just
include driver's jar in classpath
and you are ready. It also removes 3 tier architecture of type 3 JDBC
driver which makes it faster than type 3. Major development happens on
type 4 JDBC driver when database upgrade themselves, though some of them
still upgrade native database library or type 2 driver.
That's all on quick overview of different types of JDBC drivers in Java.
JDBC drivers has evolved from JDBC ODBC bridge driver to type 4 JDBC
driver, which is clean and portable. There has been some buzz around JDBC driver 5 on Java community which may include some advanced functionality. let us know if you come across some news on JDBC 5 driver.
**************************************************************
For example, using JDBC drivers enable you to open database connections and to interact with it by sending SQL or database commands then receiving results with Java.
The Java.sql package that ships with JDK contains various classes with their behaviours defined and their actual implementaions are done in third-party drivers. Third party vendors implements the java.sql.Driver interface in their database driver.
When Java first came out, this was a useful driver because most databases only supported ODBC access but now this type of driver is recommended only for experimental use or when no other alternative is available.
The JDBC-ODBC bridge that comes with JDK 1.2 is a good example of this kind of driver.
If we change the Database we have to change the native API as it is specific to a database and they are mostly obsolete now but you may realize some speed increase with a Type 2 driver, because it eliminates ODBC's overhead.
The Oracle Call Interface (OCI) driver is an example of a Type 2 driver.
This kind of driver is extremely flexible, since it requires no code installed on the client and a single driver can actually provide access to multiple databases.
You can think of the application server as a JDBC "proxy," meaning
that it makes calls for the client application. As a result, you need
some knowledge of the application server's configuration in order to
effectively use this driver type.
Your application server might use a Type 1, 2, or 4 driver to communicate with the database, understanding the nuances will prove helpful.
This kind of driver is extremely flexible, you don't need to install special software on the client or server. Further, these drivers can be downloaded dynamically.
MySQL's Connector/J driver is a Type 4 driver. Because of the
proprietary nature of their network protocols, database vendors usually
supply type 4 drivers.
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.
**************************************************************
What is JDBC Driver ?
JDBC drivers implement the defined interfaces in the JDBC API for interacting with your database server.For example, using JDBC drivers enable you to open database connections and to interact with it by sending SQL or database commands then receiving results with Java.
The Java.sql package that ships with JDK contains various classes with their behaviours defined and their actual implementaions are done in third-party drivers. Third party vendors implements the java.sql.Driver interface in their database driver.
JDBC Drivers Types:
JDBC driver implementations vary because of the wide variety of operating systems and hardware platforms in which Java operates. Sun has divided the implementation types into four categories, Types 1, 2, 3, and 4, which is explained below:Type 1: JDBC-ODBC Bridge Driver:
In a Type 1 driver, a JDBC bridge is used to access ODBC drivers installed on each client machine. Using ODBC requires configuring on your system a Data Source Name (DSN) that represents the target database.When Java first came out, this was a useful driver because most databases only supported ODBC access but now this type of driver is recommended only for experimental use or when no other alternative is available.
Type 2: JDBC-Native API:
In a Type 2 driver, JDBC API calls are converted into native C/C++ API calls which are unique to the database. These drivers typically provided by the database vendors and used in the same manner as the JDBC-ODBC Bridge, the vendor-specific driver must be installed on each client machine.If we change the Database we have to change the native API as it is specific to a database and they are mostly obsolete now but you may realize some speed increase with a Type 2 driver, because it eliminates ODBC's overhead.
Type 3: JDBC-Net pure Java:
In a Type 3 driver, a three-tier approach is used to accessing databases. The JDBC clients use standard network sockets to communicate with an middleware application server. The socket information is then translated by the middleware application server into the call format required by the DBMS, and forwarded to the database server.This kind of driver is extremely flexible, since it requires no code installed on the client and a single driver can actually provide access to multiple databases.
Your application server might use a Type 1, 2, or 4 driver to communicate with the database, understanding the nuances will prove helpful.
Type 4: 100% pure Java:
In a Type 4 driver, a pure Java-based driver that communicates directly with vendor's database through socket connection. This is the highest performance driver available for the database and is usually provided by the vendor itself.This kind of driver is extremely flexible, you don't need to install special software on the client or server. Further, these drivers can be downloaded dynamically.
Which Driver should be used?
If you are accessing one type of database, such as Oracle, Sybase, or IBM, the preferred driver type is 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.