Code360 powered by Coding Ninjas X Naukri.com. Code360 powered by Coding Ninjas X Naukri.com
Table of contents
1.
Introduction
2.
What is JDBC?
3.
Why JDBC?
4.
Components of JDBC
4.1.
JDBC API
4.2.
JDBC Test Suite
4.3.
JDBC Driver Manager
4.4.
JDBC-ODBC Bridge Drivers
5.
Applications of JDBC
6.
Architecture of JDBC
6.1.
Application
6.2.
JDBC API
6.3.
DriverManager
6.4.
Data Sources
6.5.
JDBC Drivers
7.
Types of JDBC Architecture
7.1.
Two-Tier Architecture
7.2.
Three-Tier Architecture
8.
Features of JDBC
9.
Interfaces of JDBC
10.
Classes of JDBC
11.
JDBC Working
11.1.
Java
11.2.
Output
11.3.
Explanation
12.
Advantages of JDBC Architecture
13.
Frequently Asked Questions
13.1.
What is JDBC architecture?
13.2.
What are the types of architecture in JDBC?
13.3.
What is the JDBC Type 3 driver architecture?
13.4.
What are major components of JDBC?
13.5.
Why is JDBC used?
13.6.
What is the difference between ODBC and JDBC?
14.
Conclusion
Last Updated: Apr 28, 2024
Medium

JDBC Architecture

Author yuvatimankar
1 upvote
Crack Google SDE interview : Essential projects
Speaker
Saurav Prateek
SDE-2 @
20 Jun, 2024 @ 01:30 PM

Introduction

In the expansive landscape of database connectivity, Java Database Connectivity, or JDBC, stands as a cornerstone for seamlessly bridging Java applications with relational databases. Understanding the JDBC architecture is pivotal for developers seeking efficient and reliable interaction with databases through Java programs.

JDBC Architecture

In this blog, we will briefly introduce JDBC, its advantages, what its architecture looks like, what its types are, what components 'does' contribute to JDBC architecture, and the workings of JDBC.So let's get started.

What is JDBC?

JDBC, or Java Database Database Connectivity, is a Java API that is used to interact with databases, issue queries and commands, and process database result sets. JDBC and database drivers operate together to access spreadsheets and databases. The API classes and interfaces of JDBC allow an application to send a request to a particular database. JDBC API helps Java applications interact with ORACLE, MYSQL, and MSSQL databases. 

Get the tech career you deserve, faster!
Connect with our expert counsellors to understand how to hack your way to success
User rating 4.7/5
1:1 doubt support
95% placement record
Akash Pal
Senior Software Engineer
326% Hike After Job Bootcamp
Himanshu Gusain
Programmer Analyst
32 LPA After Job Bootcamp
After Job
Bootcamp

Why JDBC?

Java programming language is used for developing enterprise applications. These applications are created with the purpose of solving real-life problems and need to interact with databases to store required data and perform operations on it. So, to interact with databases, there is a need for database connectivity, and for the same purpose, an Open Database Connectivity (ODBC) driver is used.

ODBC is an API by Microsoft and is used to interact with databases. ODBC can only be used by the Windows platform and can be used for any language such as C, C++, Ruby, Java, etc. On the other hand, JDBC is an API with interfaces and classes used to interact with databases. It is only used for Java languages and can be used for any platform. JDBC is highly suggested for Java applications because there are not any performance or platform dependency problems.

Components of JDBC

Following are the components of JDBC; these elements guide us in interacting with databases.

  • JDBC API
  • JDBC Test Suite
  • JDBC Driver Manager
  • JDBC-ODBC Bridge Drivers
Components of JDBC

JDBC API

It is a collection of various methods, classes, and interfaces for smooth communication with a database. It provides us with two different packages to connect with various databases. 

java.sql.*;
javax.sql.*;

JDBC Test Suite

It is used to test operations that are being performed on a database with the help of JDBC drivers. It tests operations such as insertion, deletion, and updation.

JDBC Driver Manager

A class in JDBC API that loads a database-specific driver in a Java application and creates a connection with a database is called JDBC Driver Manager. It makes a call to a particular database to process the user request.

JDBC-ODBC Bridge Drivers

JDBC-ODBC Bridge Drivers are used for the translation of JDBC methods into  ODBC function calls. These are used to connect database drivers to the database. We require an ODBC connection for connection with the database even after using JDBC for Java Enterprise Applications. These are used to bridge the equal gap between JDBC and ODBC drivers. The bridge translates the object-oriented JDBC method call to the procedural ODBC function call. Then the sun.jdbc.odbc package is utilized.

Applications of JDBC

JDBC (Java Database Connectivity) is a Java API that provides a standard interface for connecting Java applications to relational databases. It enables developers to perform database operations such as querying, updating, and manipulating data using SQL statements from within Java programs. The JDBC API consists of classes and interfaces that allow seamless interaction with various database management systems (DBMS) through JDBC drivers.

Some common applications of JDBC include:

  • Database Connectivity: JDBC allows Java applications to establish connections to databases, enabling them to interact with data stored in relational databases. This connectivity is essential for applications that require access to structured data for various purposes, such as storing user information, processing transactions, or generating reports.
  • Data Access: JDBC facilitates the retrieval and manipulation of data from databases using SQL queries and statements. Java applications can execute SQL queries to fetch records from database tables, update existing data, or insert new data into tables. This capability enables developers to build dynamic and data-driven applications that respond to user input or external events.
  • Transaction Management: JDBC supports transaction management, allowing Java applications to maintain data integrity and consistency when performing multiple database operations as part of a transaction. Developers can use JDBC APIs to begin, commit, or rollback transactions, ensuring that changes to the database are atomic and isolated from other concurrent transactions.
  • Batch Processing: JDBC provides support for batch processing, allowing developers to execute multiple SQL statements as a single batch operation. This feature is useful for improving performance and efficiency when dealing with large volumes of data or executing repetitive database tasks. By batching SQL statements, applications can minimize network overhead and reduce the number of round-trips to the database server.
  • Stored Procedure Invocation: JDBC enables Java applications to invoke stored procedures and functions defined in the database. This allows developers to encapsulate business logic and complex operations within the database itself, leveraging the power and performance of database server-side processing. JDBC provides APIs for calling stored procedures, passing parameters, and retrieving results, making it easy to integrate database logic into Java applications.

Architecture of JDBC

Architecture of JDBC

As we can see from the above image, the important components of JDBC are:

  • Application
  • The JDBC API
  • DriverManager
  • Data sources
  • JDBC Drivers

Let's discuss them one by one in detail.

Application

These are Java applications such as applets or servlet that communicates with databases

JDBC API

It is an API that is used to create Databases. It uses interfaces and classes to connect with databases. Some of the essential classes and interfaces defined in JDBC architecture in Java are the connection Interface and DriverManager class

DriverManager

This is used to create a connection between databases and Java applications. A connection is established between the Java application and data sources using the getConnection method of this Class

Data Sources

These are the databases that we can connect with the help of this API. These are the sources where the data is kept/stored and used by Java applications. JDBC API helps in connecting various databases such as MYSQL, MSSQL, PostgreSQL, Oracle, etc

JDBC Drivers

These are used to connect with data sources. All databases, such as MSSQL, ORACLE, and MYSQL, have their drivers. We must load their specific drivers to connect with these databases. Java Class used for loading driver is Class. Class.forName() method is used to load drivers in JDBC architecture

Types of JDBC Architecture

Based on the processing models, the JDBC Architecture can be of two types. These models are the two-tier architecture and three-tier architecture.

Two-Tier Architecture

Two-Tier Architecture
  • It is a basic model. In this Model, a Java application and Java applet communicate directly with the data source
     
  • JDBC driver is used to create a connection between the data source and the application. Whenever an application is required to interact with a database, a query is executed directly on the data source, and the output of the queries is sent back to the user as a result
     
  • This Model is also known as client/server configuration. Here, a user's machine acts as a client and the machine on which the database is placed acts as a server
     
  • Here, the data source can be found on a different machine that is connected to the same network as the user.

Three-Tier Architecture

Three-Tier Architecture
  • This Model is a more secure and complex model of JDBC architecture in Java
     
  • The user queries are sent to the middleware tier and then executed on the data source
     
  • In this Model, the Java application is treated as one tier connected to the 3rd tier, i.e., data source using middle-tier services
     
  • The results received on the database are again sent to the middle tier and then to the application/user

Features of JDBC

There are several features of JDBC:

  • JDBC provides a standardized interface for connecting Java applications to relational databases, facilitating seamless data exchange.
     
  • It manages a list of database drivers, enabling dynamic loading of drivers for different databases.
     
  • JDBC manages database connections efficiently, allowing applications to establish, maintain, and close connections.
     
  • JDBC supports the execution of SQL queries and updates, allowing interaction with the database.
     
  • It enables the management of transactions, ensuring atomicity, consistency, isolation, and durability (ACID properties).
     
  • JDBC allows retrieval of metadata information about the database, such as tables, columns, and result sets.
     
  • Robust error handling is supported, aiding developers in diagnosing and handling database-related issues.

Interfaces of JDBC

The interfaces of JDBC are mentioned below:

  1. Driver: The Driver interface provides methods for connecting to a database and returning connection objects.
     
  2. Connection: The Connection interface represents a connection to the database and provides methods for creating statements, managing transactions, etc.
     
  3. Statement: The Statement interface is used for executing SQL queries, updates, and managing result sets.
     
  4. ResultSet: The ResultSet interface represents the result set of a query and provides methods for retrieving data.
     
  5. PreparedStatement: Extending Statement, PreparedStatement is precompiled and improves performance for repeated executions.
     
  6. CallableStatement: This interface is used for executing stored procedures in the database.

Classes of JDBC

The classes of JDBC are:

  1. DriverManager: The DriverManager class manages a list of database drivers, establishing and managing database connections.
     
  2. ConnectionPoolDataSource: This class provides support for connection pooling, enhancing performance and resource utilization.
     
  3. SimpleDataSource: A basic implementation of the DataSource interface for establishing database connections.
     
  4. Blob and Clob: These classes handle binary and character large objects, respectively.
     
  5. Types: The Types class defines constants for SQL types, aiding in parameter mapping.
     
  6. SQLException: The SQLException class handles exceptions specific to JDBC operations.
     
  7. BatchUpdateException: This class represents an exception thrown when a batch update operation fails.

JDBC Working

Code

  • Java

Java

import java.sql.*;
public class JDBCArchitectureDemo {
public static void main(String[] args) {
       // jdbc:mysql://localhost:<port_number>/<database_name>
       String my_jdbcUrl = "jdbc:mysql://localhost:3307/mydatabase";
       // Credentials
       String my_username = "root";
       String my_password = "1234";
       // Establish connection
      try (Connection connection = DriverManager.getConnection(my_jdbcUrl, my_username, my_password);
           Statement statementObject = connection.createStatement()) {
           String sql_command = "SHOW TABLES;";
           ResultSet resultSet = statementObject.executeQuery(sql_command);
           while (resultSet.next()) {
               String my_tableName = resultSet.getString(1);
               System.out.println("Table: " + my_tableName);
           }
       }
       catch (SQLException e) {
           e.printStackTrace();
       }
}
}

Output

ouput

Explanation

  • import java.sql.*;: imports important classes from the java.sql package, facilitating the connection to databases. The Class JDBCArchitectureExample is defined to encapsulate the program's core functionality
  • In the main method, we begin by establishing the JDBC URL (my_jdbcUrl) to connect to a MySQL database running on localhost at port 3307. Additionally, we provide the required authentication through the my_username and my_password credentials
     
  • The try block is used to handle potential exceptions that might arise during database operations
     
  • Using the provided JDBC URL, username, and password, we establish a database connection inside the try block using DriverManager.getConnection(). This action results in the creation of a Connection object representing the connection
     
  • We create a Statement object (statementObject) from this connection to execute SQL queries against the database
     
  • The SQL command "SHOW TABLES;" is formulated to retrieve a list of tables from the connected database
     
  • The defined SQL query is executed by invoking the executeQuery() method on the statementObject. The outcomes are returned as a ResultSet object (resultSet)
     
  • Through a while loop, we navigate through the elements in the ResultSet. For each row, the getString(1) method is utilized to extract the content of the first column, indicating the table name
     
  • The extracted table name is exhibited using System.out.println()
     
  • Upon concluding the result processing, we appropriately close the ResultSet, Statement, and Connection using the close() method. This practice guarantees proper resource management

Advantages of JDBC Architecture

The JDBC (Java Database Connectivity) architecture offers several advantages, making it a widely adopted technology for database interaction in Java applications:

  • JDBC provides a standardized and efficient way to connect Java applications to relational databases, ensuring seamless communication.
     
  • JDBC is designed to be platform-independent, allowing Java applications to interact with various databases without modification.
     
  • The JDBC API is intuitive and easy to use, providing a consistent and straightforward approach for database operations in Java applications.
     
  • JDBC's Driver Manager allows for the dynamic loading of database drivers, making it flexible and adaptable to different database systems.
     
  • JDBC supports transaction management, ensuring the ACID properties (Atomicity, Consistency, Isolation, Durability) for database operations.
     
  • JDBC allows the retrieval of metadata information about the database, enabling developers to obtain details about tables, columns, and result sets.

Frequently Asked Questions

What is JDBC architecture?

JDBC, or Java Database Connectivity, is an API that permits Java Programs to connect to and run SQL statements on relational databases. 

What are the types of architecture in JDBC?

It supports two types of processing models for accessing databases: two-tier and three-tier architecture. In two-tier architecture, applications or Java programs directly communicate with the database, whereas in three-tier architecture, there is no direct communication. 

What is the JDBC Type 3 driver architecture?

JDBC type 3 driver, also known as Pure Java driver for database middleware, is a database driver implementation that uses a middle tier between the calling program and the database.

What are major components of JDBC?

The major components of JDBC include the DriverManager for managing database drivers, Connection for establishing and managing database connections, Statement for executing SQL queries, and ResultSet for handling query results.

Why is JDBC used?

JDBC (Java Database Connectivity) is used to establish connections between Java applications and relational databases. It provides a standard interface for performing database operations, such as querying, updating, and managing data, making it essential for database-driven Java applications.

What is the difference between ODBC and JDBC?

ODBC (Open Database Connectivity) and JDBC (Java Database Connectivity) are both APIs used for database access, but they differ in their implementation and platform support. ODBC is a C-based API primarily used in Windows environments, while JDBC is a Java-based API designed for cross-platform compatibility and is widely used in Java applications running on any platform.

Conclusion

In this article, we have discussed JDBC Architecture. The JDBC architecture serves as the backbone for seamless and efficient interaction between Java applications and relational databases. With its robust components facilitating connection, statement execution, and result processing, understanding JDBC architecture is key to mastering database connectivity in the Java ecosystem.  

If you want to learn more, then check out our articles:

 

Refer to our guided paths on Coding Ninjas Studio to upskill yourself in Data Structures and AlgorithmsCompetitive ProgrammingJavaScriptSystem Design, and many more! If you want to test your competency in coding, you may check out the mock test series and participate in the contests hosted on Coding Ninjas Studio! But suppose you have just started your learning process and are looking for questions asked by tech giants like Amazon, Microsoft, Uber, etc. In that case, you must have a look at the problemsinterview experiences, and interview bundles for placement preparations.

Nevertheless, consider our paid courses to give your career an edge over others!

Do upvote our blogs if you find them helpful and engaging!

Happy Learning!

Previous article
JDBC Drivers
Next article
Spring Boot Microservices
Live masterclass