Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ganesh_JavaSE7_Programming_1z0-804_study_guide.pdf
Скачиваний:
94
Добавлен:
02.02.2015
Размер:
5.88 Mб
Скачать

Chapter 10

Building Database Applications with JDBC

Define the layout of the JDBC API

Connect to a database by using a JDBC driver

Update and query a database

Exam Topics

Customize the transaction behavior of JDBC and commit transactions

Use the JDBC 4.1 RowSetProvider,

RowSetFactory, and RowSet interfaces

JDBC (Java DataBase Connectivity) is an important Java API that defines how a client accesses a database. As such, it is critical in building large-scale enterprise Java solutions. As an Oracle certified programmer, it is expected that you understand JDBC and its related features. You can use JDBC to perform database operations such as inserting, updating, and creating database entities as well as executing SQL queries. Using JDBC support, you can also perform transactions on the database.

This chapter discusses JDBC features in terms of ResultSet, Connection, and Statement implementations. JDBC 4.1 introduces RowSet and its related utility classes such as RowSetFactory and RowSetProvider, which are also discussed in this chapter.

The JDBC classes are part of the packages java.sql.* and javax.sql.*. In this chapter, we assume that you’re already familiar with SQL queries and have some basic understanding of database concepts.

Introduction to JDBC

When you write applications for solving real-world problems, you routinely come upon requirements where you need to store, navigate, and modify data. In an enterprise environment, you need to work with DBMSs (Database Management Systems) to handle the large amounts of data you have. However, interacting with DBMSs (henceforth,

281

Chapter 10 Building Database Applications with JDBC

we simply refer to DBMSs as databases) is not really trivial or straightforward. Numerous enterprise and open source database systems are available today and they differ from each other: DB2, SQL Server, MySQL, Oracle, and many more. This heterogeneity of popular databases makes it difficult write code that can be used with any database.

To solve these problems and to make your life easy, Java offers JDBC. JDBC is a set of APIs provided by Java to programmatically interact with various databases.

At a high level, interacting with a database involves the following steps:

Establishing a connection to a database.

Executing SQL queries to retrieve, create, or modify a database.

Closing the connection to the database.

Java provides a set of APIs (i.e., JDBC) to carry out these activities with databases. In other words, you can use JDBC to establish a connection to a database, execute your SQL query, and close the connection with the database. The beauty of JDBC is that you are not writing a program for a specific database. JDBC creates loose coupling between your Java program and the type of database used. For instance, databases may differ in how they establish a connection (for instance, the API name may differ with databases). JDBC hides all the heterogeneity of these databases and offers a single set of APIs to interact with all types of databases.

The Architecture of JDBC

Let’s examine the vital components of JDBC and how these components work together to achieve seamless integration with databases. A simplified architecture of JDBC is graphically represented in Figure 10-1. A Java application uses JDBC APIs to interact with databases. JDBC APIs interact with the JDBC driver manager to transparently connect and perform various database activities with different types of databases. The JDBC driver manager uses various JDBC drivers to connect to their specific DBMSs.

Java Applications

JDBC APIs

JDBC Driver Manager

JDBC Driver

 

JDBC Driver

 

JDBC Driver

(ODBC)

 

(Oracle)

 

(MySQL)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ODBC

 

Oracle

 

MySQL

 

 

 

 

 

 

 

 

Figure 10-1.  JDBC architecture

In this context, JDBC drivers and the driver manager play a key role in realizing the objective of JDBC. JDBC drivers are specifically designed to interact with their respective DBMSs. The driver manager works as a directory of JDBC drivers—in other words, it maintains a list of available data sources and their drivers. The driver manager

282

Chapter 10 Building Database Applications with JDBC

chooses an appropriate driver to communicate to the respective DBMS. It can manage multiple concurrent drivers connected to their respective data sources.

You can observe here that the complexity of heterogeneous interactions is delegated to the JDBC driver manager and JDBC drivers; hence all the details and complications are hidden by the JDBC API from the application developer.

Two-Tier and Three-Tier JDBC Architecture

Broadly, JDBC architectures can be seen in two major configurations: two-tier and three-tier. In a two-tier configuration, a Java application along with a JDBC driver constitutes the first tier as a client. On the other hand, the database works as a server that fulfills the requirements sent from the clients. Typically, the database resides on a different machine connected through the network.

The first tier in a three-tier configuration is a lightweight Java application (an applet, for instance) that communicates to the application server (the second tier). The application server in turn forwards the request to the database (the third tier). In this configuration, the middle tier plays a vital role since the behavior of the configuration can be fine-tuned based on the requirements (for instance, enforcing access control).

Types of JDBC Drivers

There are a number of types of JDBC drivers that have emerged, and they are being used by the industry based on preference and needs. They can be categorized based on the technology used to communicate to the actual respective DBMS. The type of these drivers can play a critical role when selecting an appropriate DBMS for a Java application. There are four types of JDBC drivers:

JDBC-ODBC bridge drivers (type 1): You may already know about ODBC (Open Database Connectivity), which is a portable middleware API written in C for accessing databases. The first category belongs to the drivers that are designed to work with ODBC drivers; they play the role of a bridge from a Java application to an ODBC driver. Such drivers are useful especially in cases when the ODBC driver for the DBMS is available. The JDBC driver calls the ODBC native calls using Java Native Interface (JNI). The drivers from this category might not be suitable for applets since often client-side software and an ODBC driver are required for this bridge to work properly.

Native-API driver (type 2): The database drivers belonging to this category use client-side libraries of a specific database and convert JDBC calls to native database calls. Mostly, these drivers are not written entirely in Java, and hence are not portable. These drivers are not suitable for Java applets since they require proprietary client software installed on client machines. However, these drivers are typically faster than type 1 drivers.

The network-protocol driver (type 3): This type of database driver implements a three-tier architecture where JDBC calls are converted to native database calls via a middleware implementation. In other words, the driver calls database middleware and the middleware actually converts JDBC calls to database specific native calls. Typically, the driver is implemented in Java, which does not require any other client implementation at client side; hence they could be employed in Internet-based applications. However, these drivers are typically slower than type 2 drivers.

Native-protocol driver (type 4): Such drivers are implemented in Java completely, so they are platform independent. Drivers belonging to this category directly make database specific calls over the network without any support of additional client side libraries. These drivers are the most flexible database drivers among all other database types. These drivers perform better than other driver types. However, these drivers may be lacking in covering the security aspects of database access.

For an enterprise application, you need to select an appropriate driver based on the requirements.

283

Chapter 10 Building Database Applications with JDBC

Setting Up the Database

Before you start exploring JDBC APIs and their usage with the help of examples, first you must configure a database with which you will work. The database needs to be configured properly before you start writing JDBC programs. You can use any widely available database. In this chapter, we will use MySQL to explain various aspects of JDBC APIs since this database is free and widely available. Hence, we are showing steps to set up a MySQL database on your machine assuming that you use Windows (if you are using another operating system, these steps will slightly differ):

The first step is to download the appropriate installer for your platform. For MySQL database, you may download the latest installer from the MySQL download page (www.mysql.com/ downloads/mysql/).

Once the installer gets downloaded, the next step is to install it. You must have admin privileges in your machine to install the software. You need to invoke the installer and follow all the steps shown by the installation wizard. Keep the default values and complete the installation. The installer will ask you to provide a root password; remember it because it will be used in these examples.

The next step is to download the database connector. The database connector only will allow you to connect to the database. You can download the connector for MySQL from its connector download page (http://dev.mysql.com/downloads/connector/j/).

Do not forget to add the path of the connector to the classpath. If the connector name is mysql-connector-java-5.1.21-bin.jar stored in C:\mysql-connector-java-5.1.21, then add c:\ mysql-connector-java-5.1.21\mysql-connector-java-5.1.21-bin.jar to the classpath.

Invoke the command-line client of MySQL (in our case, it is “MySQL 5.5 Command Line Client” shown in start menu). You will get a MySQL prompt once you provide the root password, as shown here:

Enter password: ********

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1

Server version: 5.5.27 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> /* Let's create a database for our use.*/

mysql> create database addressBook;

Query OK, 1 row affected (0.01 sec)

mysql> /* Now, let's create a table in this database and insert two records for our use later. */

mysql> use addressBook;

Database changed

mysql> create table contact (id int not null auto_increment, firstName varchar(30) Not null, lastName varchar(30), email varchar(30), phoneNo varchar(13), primary key (id));

Query OK, 0 rows affected (0.20 sec)

284

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]