Tuesday, September 23, 2008

Types of JDBC Drivers

JDBC drivers are divided into four types or levels. The different types of jdbc drivers are:

Type 1: JDBC-ODBC Bridge driver (Bridge)
Type 2: Native-API/partly Java driver (Native)
Type 3: All Java/Net-protocol driver (Middleware)
Type 4: All Java/Native-protocol driver (Pure)

Type 1 JDBC Driver

JDBC-ODBC Bridge driver

The Type 1 driver translates all JDBC calls into ODBC calls and sends them to the ODBC driver. ODBC is a generic API. The JDBC-ODBC Bridge driver is recommended only for experimental use or when no other alternative is available.

Advantage

The JDBC-ODBC Bridge allows access to almost any database, since the database's ODBC drivers are already available.

Disadvantages

1. Since the Bridge driver is not written fully in Java, Type 1 drivers are not portable.
2. A performance issue is seen as a JDBC call goes through the bridge to the ODBC driver, then to the database, and this applies even in the reverse process. They are the slowest of all driver types.
3. The client system requires the ODBC Installation to use the driver.
4. Not good for the Web.


Type 2 JDBC Driver

Native-API/partly Java driver

The distinctive characteristic of type 2 jdbc drivers is that Type 2 drivers convert JDBC calls into database-specific calls i.e. this driver is specific to a particular database. Some distinctive characteristic of type 2 jdbc drivers are shown below. Example: Oracle will have oracle native API.

Advantage

The distinctive characteristic of type 2 jdbc drivers are that they are typically offer better performance than the JDBC-ODBC Bridge as the layers of communication (tiers) are less than that of Type 1 and also it uses Native api which is Database specific.

Disadvantage

1. Native API must be installed in the Client System and hence type 2 drivers cannot be used for the Internet.
2. Like Type 1 drivers, it’s not written in Java Language which forms a portability issue.
3. If we change the Database we have to change the native api as it is specific to a database
4. Mostly obsolete now
5. Usually not thread safe.


Type 3 JDBC Driver

All Java/Net-protocol driver

Type 3 database requests are passed through the network to the middle-tier server. The middle-tier then translates the request to the database. If the middle-tier server can in turn use Type1, Type 2 or Type 4 drivers.

Advantage

1. This driver is server-based, so there is no need for any vendor database library to be present on client machines.
2. This driver is fully written in Java and hence Portable. It is suitable for the web.
3. There are many opportunities to optimize portability, performance, and scalability.
4. The net protocol can be designed to make the client JDBC driver very small and fast to load.
5. The type 3 driver typically provides support for features such as caching (connections, query results, and so on), load balancing, and advanced system administration such as logging and auditing.
6. This driver is very flexible allows access to multiple databases using one driver.
7. They are the most efficient amongst all driver types.

Disadvantage

It requires another server application to install and maintain. Traversing the recordset may take longer, since the data comes through the backend server.


Type 4 JDBC Driver

Native-protocol/all-Java driver

The Type 4 uses java networking libraries to communicate directly with the database server.

Advantage

1. The major benefit of using a type 4 jdbc drivers are that they are completely written in Java to achieve platform independence and eliminate deployment administration issues. It is most suitable for the web.
2. Number of translation layers is very less i.e. type 4 JDBC drivers don't have to translate database requests to ODBC or a native connectivity interface or to pass the request on to another server, performance is typically quite good.
3. You don’t need to install special software on the client or server. Further, these drivers can be downloaded dynamically.

Disadvantage

With type 4 drivers, the user needs a different driver for each database.

Sunday, September 21, 2008

Elements of JDBC Architecture


1. Client Java Program

There are many kinds of Java programs like Java bean, Applet, Servlet, EJB, Swing window, etc. Whenever, these Java programs are request the DBMS for database operations these are clients with respect to the database server.

Responsibilities of the client Java program

i. Establishing database connection.

ii. Submitting SQL statements to the DBMS based on the business service the program is handling.

iii. Processing the results that come from the database and presenting them to the end user.

iv. Closing the connection when the database operation are complete


2. JDBC API

In Java, methods are stored in class files. These class files are grouped in packages. JDBC library methods are grouped into 2 packages

i. java.sql

ii. javax.sql

Whenever a Java program wants to communicate with the DBMS it has to make use of the JDBC API. To make these library methods available to the Java program, we need to import these packages.

e.g.: import java.sql.*;


3. DriverManager

  • Java program requests the DriverManager for the database connection.
  • DriverManager initiates the connection process on the driver.
  • Driver establishes the connection with the database server and gives the same to the DriverManager.
  • In turn, the DriverManager gives the connection to the Java program.
  • Once the Java client program is connected to the database server, DriverManager’s role ends.

4. Driver

  • A driver is pre-created translation software that enables Java and database communication in heterogeneous environment.
  • A driver developed according to JDBC specification is a JDBC driver.
  • JDBC drivers are written in Java.
  • They implement JDBC API

Responsibilities of a driver

i. Establishing the Java client – database server connectivity.

ii. Receiving the JDBC method calls from the JDBC application, translating them into DBMS understandable calls and forwarding them to the DBMS.

iii. Receiving the results / response from the DBMS, translating them into Java or JDBC format and returning them to the application.

iv. Indicating the end of the database session of the client to the DBMS.

Saturday, September 20, 2008

JDBC Architecture

JDBC architecture comprises of 5 elements

  1. Client Java Program
  2. JDBC API
  3. DriverManager (a class in JDBC API)
  4. Driver
  5. Database server

Thursday, September 18, 2008

Introduction to JDBC

In an enterprise application, business data should be stored in a persistent storage area in such a way that it can be retrieved efficiently and in programming language independent manner.

Database Management Systems (DBMSs) allow us to store data permanently in the databases and retrieve it in a language independent way. Databases are good at storing data but poor at processing and presenting it. High level languages like Java are made for data processing and presenting and hence are efficient in this task but poor at storage. Hence these both form integral components of a business application. Since each has a specific role, interaction between them is inevitable.

The strength of Java is its methods. However, to retrieve data from the database these method calls cannot be used. No DBMS is capable of understanding Java method calls. DBMSs use SQL to interact with the database. Java cannot process SQL statements and SQL syntax. These are called heterogeneous environments. Thus, its clear that Java - Database interaction though mandatory, cannot be achieved directly.

What is JDBC?

1. To enable Java - Database communication in heterogeneous environments (such stated above), Sun Microsystems created a technology called JDBC.

2. JDBC is a J2SE technology.

3. JDBC is an API (Application Programming Interface) - a set of library methods that enable Java - Database comunication.

4. JDBC is a specification.

5. JDBC is a service technology.

JDBC is used by any kind of Java program (Servlets, JSP, Applets, Swing, etc) to communicate with any database(Oracle, MS SQL Server, MySQL, Informix, Sybase, etc) in a standard manner.

Any Java program communicating with the database is a JDBC application.