This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages) (Learn how and when to remove this message)
|
AJDBC driver is asoftware component enabling aJava application to interact with adatabase.[1] JDBC drivers are analogous toODBC drivers,ADO.NET data providers, andOLE DB providers.
To connect with individual databases,JDBC (the Java Database ConnectivityAPI) requires drivers for each database. The JDBC driver gives out theconnection to the database and implements theprotocol for transferring the query and result betweenclient and database.
JDBC technology drivers fit into one of four categories.[2]

The JDBC type 1 driver, also known as theJDBC-ODBC bridge, is a dbase driver implementation that employs theODBC 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 underlyingoperating system theJVM 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).[3][4][5][6]
If a driver has been written so that loading it causes an instance to be created and also callsDriverManager.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 givenURL. 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 methodDriverManager.getConnection. The first driver that recognizes the URL makes the connection.

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

The JDBC type 3 driver, also known as the Pure Java driver for database middleware,[7] is a database driver implementation which makes use of amiddle tier between the calling program and the database. The middle-tier (application server) convertsJDBC calls directly or indirectly into a vendor-specificdatabase 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 isplatform-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.

The JDBC type 4 driver, also known as the Direct to DatabasePure Java Driver, is a database driver implementation that convertsJDBC calls directly into a vendor-specificdatabase protocol.
Written completely inJava, type 4 drivers are thusplatform independent. They install inside theJava virtual machine 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.
JDBC-to-ODBC Bridge, in both Type 1 and Type 3 forms, has been available and regularly updated since its original release for JDBC 1.