A JDBC driver is a
software
Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work.
At the lowest programming level, executable code consists ...
component enabling a
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
application to interact with a
database
In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases sp ...
. JDBC drivers are analogous to
ODBC driver
In computing, Open Database Connectivity (ODBC) is a standard application programming interface (API) for accessing database management systems (DBMS). The designers of ODBC aimed to make it independent of database systems and operating systems. An ...
s,
ADO.NET data providers, and
OLE DB provider
OLE DB (''Object Linking and Embedding, Database'', sometimes written as OLEDB or OLE-DB), an API designed by Microsoft, allows accessing data from a variety of sources in a uniform manner. The API provides a set of interfaces implemented using ...
s.
To connect with individual databases,
JDBC
Java Database Connectivity (JDBC) is an application programming interface (API) for the programming language Java, which defines how a client may access a database. It is a Java-based data access technology used for Java database connectivity. I ...
(the Java Database Connectivity
API
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software Interface (computing), interface, offering a service to other pieces of software. A document or standa ...
) requires drivers for each database. The JDBC driver gives out the
connection to the database and implements the
protocol
Protocol may refer to:
Sociology and politics
* Protocol (politics), a formal agreement between nation states
* Protocol (diplomacy), the etiquette of diplomacy and affairs of state
* Etiquette, a code of personal behavior
Science and technology
...
for transferring the query and result between
client
Client(s) or The Client may refer to:
* Client (business)
* Client (computing), hardware or software that accesses a remote service on another computer
* Customer or client, a recipient of goods or services in return for monetary or other valuable ...
and database.
JDBC technology drivers fit into one of four categories.
# JDBC-ODBC bridge
# Native-API driver
# Network-Protocol driver (
Middleware
Middleware is a type of computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue".
Middleware makes it easier for software developers to implement co ...
driver)
# Database-Protocol driver (Pure Java driver) or thin driver.
Type 1 driver – JDBC-ODBC bridge
The JDBC type 1 driver, also known as the JDBC-ODBC bridge, is a database driver implementation that employs the
ODBC
In computing, Open Database Connectivity (ODBC) is a standard application programming interface (API) for accessing database management systems (DBMS). The designers of ODBC aimed to make it independent of database systems and operating systems. An ...
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
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
the
JVM
A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes ...
is running upon. Also, 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.
Sun (now Oracle) provided a JDBC-ODBC Bridge driver:
sun.jdbc.odbc.JdbcOdbcDriver
. This driver is native code and not Java, and is closed source. Sun's/Oracle's JDBC-ODBC Bridge was removed in Java 8 (other vendors' are available).
If a driver has been written so that loading it causes an instance to be created and also calls
DriverManager.registerDriver
with that instance as the parameter, then it is in the DriverManager's list of drivers and available for creating a connection.
It may sometimes be the case that more than one JDBC driver is capable of connecting to a given
URL. For example, when connecting to a given remote database, it might be possible to use a JDBC-ODBC bridge driver, a JDBC-to-generic-network-protocol driver, or a driver supplied by the database vendor. In such cases, the order in which the drivers are tested is significant because the DriverManager will use the first driver it finds that can successfully connect to the given URL.
First the DriverManager tries to use each driver in the order it was registered. (The drivers listed in jdbc.drivers are always registered first.) It will skip any drivers that are untrusted code unless they have been loaded from the same source as the code that is trying to open the connection.
It tests the drivers by calling the method Driver.connect on each one in turn, passing them the URL that the user originally passed to the method
DriverManager.getConnection
. The first driver that recognizes the URL makes the connection.
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
applet
In computing, an applet is any small application that performs one specific task that runs within the scope of a dedicated widget engine or a larger program, often as a plug-in. The term is frequently used to refer to a Java applet, a program w ...
s, because the ODBC driver needs to be installed on the client.
* Specific ODBC drivers are not always available on all platforms; hence, portability of this driver is limited.
* No support from JDK 1.8 (Java 8).
Type 2 driver – Native-API 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
Java Database Connectivity (JDBC) is an application programming interface (API) for the programming language Java, which defines how a client may access a database. It is a Java-based data access technology used for Java database connectivity. I ...
method calls into native calls of the database API. For example: Oracle OCI driver is a type 2 driver.
Advantages
* As there is no implementation of JDBC-ODBC bridge, it may be considerably faster than a Type 1 driver.
Disadvantages
* 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 – Network-Protocol driver (middleware driver)
The JDBC type 3 driver, also known as the Pure Java driver for database middleware,
is a database driver implementation which makes use of a
middle tier
In software engineering, multitier architecture (often referred to as ''n''-tier architecture) is a client–server architecture in which presentation, application processing and data management functions are physically separated. The most wide ...
between the calling program and the database. The middle-tier (
application server
An application server is a server that hosts applications or software that delivers a business application through a communication protocol.
An application server framework is a service layer model. It includes software components available to a ...
) converts
JDBC
Java Database Connectivity (JDBC) is an application programming interface (API) for the programming language Java, which defines how a client may access a database. It is a Java-based data access technology used for Java database connectivity. I ...
calls directly or indirectly into a vendor-specific
database
In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases sp ...
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
In computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several computing platforms. Some cross-platform software ...
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.
Functions
* 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
* Since the communication between client and the middleware server is database independent, 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.
* E.g.: IDA Server
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 – Database-Protocol driver/Thin Driver(Pure Java driver)
The JDBC type 4 driver, also known as the Direct to Database Pure Java Driver, is a database driver implementation that converts
JDBC
Java Database Connectivity (JDBC) is an application programming interface (API) for the programming language Java, which defines how a client may access a database. It is a Java-based data access technology used for Java database connectivity. I ...
calls directly into a vendor-specific
database
In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases sp ...
protocol.
Written completely in
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
, type 4 drivers are thus
platform independent
In computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several computing platforms. Some cross-platform software r ...
. They install inside the
Java virtual machine
A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes ...
of the client. This provides better performance than the type 1 and type 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
Middleware is a type of computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue".
Middleware makes it easier for software developers to implement co ...
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.
See also
*
ADO.NET
*
OLE DB
OLE DB (''Object Linking and Embedding, Database'', sometimes written as OLEDB or OLE-DB), an API designed by Microsoft, allows accessing data from a variety of sources in a uniform manner. The API provides a set of interfaces implemented using ...
*
Open Database Connectivity
In computing, Open Database Connectivity (ODBC) is a standard application programming interface (API) for accessing database management systems (DBMS). The designers of ODBC aimed to make it independent of database systems and operating systems. An ...
(ODBC)
*
XQJ (XQuery API for Java)
References
{{Reflist
Java platform
Data access technologies