JDBC bài 1 JDBC là gì? Kiến trúc tổng quan và cách thức hoạt động
Khi làm việc với Java Backend, việc kết nối ứng dụng với cơ sở dữ liệu (Database) là điều bắt buộc. Java cung cấp một tiêu chuẩn mạnh mẽ để làm việc này, đó chính là JDBC.
1. JDBC là gì?
JDBC viết tắt của Java Database Connectivity. Đây là một bộ API (tập hợp các interface và class) chuẩn của Java, cho phép ứng dụng Java tương tác với nhiều loại cơ sở dữ liệu quan hệ (RDBMS) khác nhau như MySQL, PostgreSQL, Oracle, SQL Server,...
Vấn đề mà JDBC giải quyết: Mỗi hệ quản trị cơ sở dữ liệu có một giao thức giao tiếp riêng. Nếu không có JDBC, để kết nối với MySQL bạn phải viết code theo chuẩn của MySQL; nếu sau này đổi sang PostgreSQL, bạn phải đập đi viết lại toàn bộ phần kết nối. JDBC ra đời đóng vai trò như một "thông dịch viên chuẩn quốc tế". Bạn chỉ cần viết code Java một lần theo chuẩn API của JDBC, còn việc giao tiếp chi tiết với từng Database cụ thể sẽ do các JDBC Driver đảm nhận.
2. Kiến trúc tổng quan của JDBC
Kiến trúc của JDBC được chia làm 2 tầng chính, giúp tách biệt hoàn toàn giữa code của ứng dụng và code của hệ quản trị cơ sở dữ liệu:
Tầng 1: JDBC API (Application Layer)
Đây là tầng dành cho các lập trình viên Java (như bạn). Tầng này bao gồm các interface và class nằm trong package java.sql và javax.sql. Nó cung cấp các phương thức để:
-
Khởi tạo kết nối.
-
Tạo và thực thi các câu lệnh SQL.
-
Nhận và xử lý kết quả trả về.
Tầng 2: JDBC Driver API (Driver Layer)
Đây là tầng dành cho các nhà cung cấp Database (Database Vendors như Oracle, Microsoft, MySQL). Java chỉ đưa ra các Interface (bản thiết kế) ở tầng 1, còn tầng 2 chính là các class implement (thực thi) các Interface đó. Các bộ cài đặt này được gọi là JDBC Driver (thường là các file .jar mà bạn import vào project).
3. Các thành phần (Interfaces/Classes) cốt lõi của JDBC
Để viết một chương trình JDBC, bạn sẽ làm việc chủ yếu với 5 thành phần sau (tất cả đều thuộc java.sql):
-
DriverManager (Class): Quản lý danh sách các Database Drivers. Nó nhận yêu cầu kết nối từ ứng dụng và tìm ra Driver phù hợp nhất để thiết lập kết nối tới Database.
-
Connection (Interface): Đại diện cho một phiên làm việc (session) vật lý giữa ứng dụng Java và Database. Mọi hoạt động giao tiếp đều phải đi qua Connection này.
-
Statement (Interface): Nơi chứa và gửi các câu lệnh SQL tĩnh (Static SQL) tới Database để thực thi.
-
PreparedStatement (Interface): Kế thừa từ Statement, dùng để thực thi các câu lệnh SQL động (có tham số truyền vào). Tối ưu hiệu năng và chống SQL Injection.
-
ResultSet (Interface): Đối tượng chứa dữ liệu dạng bảng trả về sau khi thực thi câu lệnh
SELECT. Cung cấp con trỏ (cursor) để duyệt qua từng dòng dữ liệu.
4. Cách thức hoạt động (Quy trình 5 bước kinh điển)
Mọi luồng thao tác với JDBC đều tuân theo một quy trình vòng đời cơ bản sau:
-
Bước 1: Load Driver & Mở kết nối Ứng dụng yêu cầu
DriverManagercấp mộtConnection.DriverManagersẽ dựa vào chuỗi kết nối (URL) để gọi JDBC Driver tương ứng (ví dụ MySQL Driver) và mở đường truyền tới DB. -
Bước 2: Tạo đối tượng Statement Từ đối tượng
Connection, bạn tạo raStatementhoặcPreparedStatement. -
Bước 3: Thực thi truy vấn (Execute Query) Đưa câu lệnh SQL vào
Statementvà ra lệnh thực thi. Nếu là câuSELECT, Database sẽ trả về mộtResultSet. Nếu làINSERT/UPDATE/DELETE, Database trả về số lượng dòng bị ảnh hưởng. -
Bước 4: Xử lý kết quả Dùng vòng lặp (thường là
while) để duyệt quaResultSetvà lấy dữ liệu ra ánh xạ vào các Object trong Java. -
Bước 5: Đóng kết nối (Close Resources) Giải phóng bộ nhớ bằng cách đóng lần lượt
ResultSet,Statementvà cuối cùng làConnection. Nếu không đóng, server sẽ bị treo vì rò rỉ tài nguyên (Memory/Connection Leak).
Tóm lại: JDBC chỉ là một bộ quy tắc (Interfaces). Lập trình viên gọi API của JDBC -> JDBC gọi tới Driver -> Driver dịch lệnh gửi xuống Database. Database trả kết quả cho Driver -> Driver trả lại cho JDBC -> Lập trình viên nhận được dữ liệu.
All rights reserved