Hầu hết các ứng dụng Java hay framework của Java hiện nay đều đang dần chuyển hướng sang các Object Relational Mapping (ORM) để có thể làm việc với database, điển hình là hibernate. Điều này khiến cho mọi người dần quên đi JDBC trong khi chính hibernate đang sử dụng JDBC để thực hiện việc kết nối đến các cơ sở dữ liệu và thực thi các lệnh SQL cho chính JDBC tạo ra. Để hiểu rõ hơn về JDBC chúng ta sẽ tìm hiểu qua bài viết sau.

1. JDBC là gì?

JDBC là viết tắt của Java Database Connectivity, là một java API chuẩn để kết nối giữa ngôn ngữ lập trình java và các cơ sở dữ liệu như MYSQL. JBDC được dùng với mục đích quản lý việc kết nối các dữ liệu, thực thi các câu lệnh SQL xuống database và xử lý các tập kết quả dữ liệu thu được từ database đó. Ngoài ra, JDBC cũng cho phép người dùng có thể thực hiện các thao tác truy xuất, update các dữ liệu với cơ sở dữ liệu thông qua việc sử dụng các câu lệnh SQL.

JDBC được phát hành tương tự như một phần của JKD vào năm 1997 nên nó được xem là một trong những thành phần đầu tiên góp phần vào sự phát triển của lớp bền vững Java.

JDBC API sẽ sử dụng JDBC driver để làm việc với cơ sở dữ liệu bao gồm bốn loại:

  • JDBC-ODBC Bridge Driver (Trình điều khiển cầu JDBC-ODBC): sử dụng ODBC driver để kết nối tới cơ sở dữ liệu. JDBC-ODBC bridge driver chuyển đổi các lời gọi phương thức JDBC thành các lời gọi hàm trong ODBC. Trong giai đoạn đầu khi Java mới xuất hiện thì kiểu driver này khá là hữu ích, bởi vì hầu hết cơ sở dữ liệu chỉ hỗ trợ truy cập ODBC. Nhưng hiện nay, kiểu driver này chỉ còn được sử dụng trong các thí nghiệm.
  • Native Driver (Trình điều khiển Native): sử dụng các thư viện Client-side của cơ sở dữ liệu. Driver này chuyển đổi các lời gọi phương thức JDBC thành các lời gọi Native C/C++ API. Nó không được viết bằng Java.
  • Network Protocol Driver (Trình điều khiển giao thức mạng): sử dụng một Middleware để chuyển đổi các lời gọi JDBC một cách trực tiếp hoặc gián tiếp thành Database Protocol. Driver này hoàn toàn được viết bằng Java.
  • Thin Driver (Trình điều khiển mỏng): chuyển đổi trực tiếp các lời gọi JDBC thành Database Protocol. Kiểu driver này được viết hoàn toàn bằng Java. Nó thực sự linh động, bạn không cần cài đặt phần mềm đặc biệt trên Client hoặc Server.
hình ảnh_2024-12-02_115011027.png

2. Các thành phần của JDBC

  • Driver Manager: là class chịu trách nhiệm cho việc quản lý danh sách của các cơ sở dữ liệu driver đồng thời tạo ra những kết nối tương ứng đến database cụ thể được JDBC chỉ định.
  • Driver: là interface chịu trách nhiệm cho việc xử lý mọi hoạt động giao tiếp giữa ứng dụng và database.
  • Connection: là interface có khả năng cung cấp cho người dùng tất cả các hàm phục vụ cho việc thao tác với database.
  • Statement, CallableStatement, PreparedStatement: là interface sẽ tạo ra các object mà người dùng có thể ứng dụng để thực thi các câu lệnh SQL xuống database.
  • ResultSet: là thành phần lưu trữ và biểu diễn một tập kết quả được trả về từ database thông qua việc dùng câu lệnh SQL là Select.
  • SQLException: là class xử lý các lỗi xảy ra trong database.

3. Tạo một project

  • Chuẩn bị database (ở đây dùng MySQL)
hình ảnh_2024-12-02_104326924.png
  • Thêm một số dữ liệu vào bảng
hình ảnh_2024-12-02_104513697.png
  • Cài đặt thư viện (dùng maven để quản lý chương trình java) thêm hai dependency vào file pom.xml
<dependencies>
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>12.8.0.jre8</version>
    </dependency>
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.3.0</version>
    </dependency>
</dependencies>
- Tạo kết nối đến database (chuẩn bị sẵn các thông tin như hostname, username, password, database)
public class load {
    public static final String URL = "jdbc:mysql://localhost:3306/accounting_system?user=root";
    public static final String USER = "root";
    public static final String PASSWORD = "123456";
    public static final Connection CONNECTION = getCONNECTION();

    public static Connection getCONNECTION(){
        try{
            return DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (Exception e){
            System.out.println(e.getMessage());
        }
        return null;
    }
}

4. Tổng kết

JDBC là API lâu đời nhất của Java nhưng cũng cung cấp một giải pháp dễ sử dụng nhất để phục vụ cho nhu cầu phát triển các ứng dụng Java của các lập trình viên. Do đó, JDBC nên là phần nội dung đầu tiên mà bạn cần tiếp cận khi bạn muốn triển khai các ứng dụng thao tác với cơ sở dữ liệu trước khi sử dụng các ORM.