JDBC là gì?
Khái niệm
JDBC API: là Java API cho phép access các loại dữ liệu dạng bảng, đặc biệt là dữ liệu được lưu trữ trong cơ sở dữ liệu quan hệ.
JDBC giúp bạn viết các ứng dụng Java quản lý ba hoạt động lập trình sau:
Kết nối với nguồn dữ liệu, chẳng hạn như cơ sở dữ liệu
Gửi truy vấn và cập nhật câu lệnh vào cơ sở dữ liệu
Truy xuất và xử lý kết quả nhận được từ cơ sở dữ liệu để trả lời cho truy vấn của bạn
Ví dụ:
public void connectToAndQueryDatabase(String username, String password) {
Connection con = DriverManager.getConnection(
"jdbc:myDriver:myDatabase",
username,
password);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}
}
Đoạn code trên:
khởi tạo một
DriverManager
object để connect tới database driver và log in vào databasekhởi tạo một Statement object giúp truyền câu lệnh SQL của bạn tới databse;
khởi tạo 1 ResultSet object để truy xuất kết quả truy vấn của bạn .
và thực hiện một vòng lặp while đơn giản, vòng lặp này sẽ truy xuất và hiển thị các kết quả đó.
JDBC Product Components
JDBC bao gồm 4 components:
JDBC API:
cung cấp programmatic access vào dữ liệu quan hệ từ ngôn ngữ lập trình Java. Sử dụng JDBC API, các ứng dụng có thể thực thi các câu lệnh SQL, truy xuất kết quả và propagate các thay đổi với data source.
API JDBC cũng có thể tương tác với nhiều nguồn dữ liệu trong một môi trường phân tán (distributed), không đồng nhất (heterogeneous).
JDBC 4.0 API được chia thanfhg 2 package: java.sql và javax.sql. Cả hai package này được included trong Java SE và Java EE.
JDBC Driver Manager:
- JDBC
DriverManager
class định nghĩa các objects có thể connect Java application tới 1 JDBC Driver.
- JDBC
JDBC Test Suite:
- Giúp bạn quyết định JDBC driver nào sẽ chạy chương trình của bạn
JDBC-ODBC Bridge:
- cung cấp quyền truy cập JDBC thông qua ODBC drivers.
JDBC workflow:
Ứng dụng Java sử dụng JDBC làm việc với CSDL thông qua trình tự 7 bước như sau.
Tạo kết nối đến database
Gửi SQL query đến database sử dụng JDBC driver tương ứng
JDBC driver kết nối đến database
Thực thi câu lệnh query để lấy kết quả trả về (số bản ghi lấy được, số bản ghi được update/delete)
Gửi dữ liệu đến ứng dụng thông qua Driver Manager
Xử lý dữ liệu trả về
Đóng (giải phóng) kế nối đến database
Kiến trúc của JDBC:
Figure 1: Two-tier Architecture for Data Access.
Trong mô hình two – tier, một Java applet hoặc ứng dụng Java tương tác trực tiếp với nguồn dữ liệu. Điều này yêu cầu JDBC driver có thể giao tiếp với data source cụ thể đang được truy cập.
Các câu lệnh của người dùng được chuyển đến database và các data source khác, và kết quả của các statements này sẽ được gửi trả lại cho người dùng. Data source có thể được đặt ở 1 máy khác mà người dùng connect đến thông qua network. Đây được gọi là cấu hình client/server, với máy của người dùng là client và máy chứa nguồn dữ liệu là server.
Figure 2: Three-tier Architecture for Data Access.
Trong mô hình three – tier, các câu lệnh được gửi tới “middle tier”, sau đó sẽ được gửi tới data source. Data sources sẽ xử lý các câu lệnh và gửi trả kết quả cho middle tier, middle tier sẽ gửi lại cho người dùng. Với middle tier, bạn có thể duy trì quyền kiểm soát quyền truy cập và các loại cập nhật có thể được thực hiện đối với dữ liệu của công ty. Một ưu điểm khác là nó đơn giản hóa việc triển khai các ứng dụng. Cuối cùng, trong nhiều trường hợp, kiến trúc ba tầng có thể mang lại lợi thế về hiệu suất.
API JDBC ngày càng được sử dụng nhiều hơn ở tầng giữa của kiến trúc ba tầng. Một số tính năng khiến JDBC trở thành server technology connection pooling, distributed transactions, và disconnected rowsets. API JDBC cũngcho phép truy cập vào nguồn dữ liệu từ tầng trung gian Java.
Để thiết lập connection với data source, bạn xem thêm chi tiết hướng dẫn triển khai tại đây:
https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html
Để triển khai các câu lệnh SQL với JDBC bạn xem thêm tại đây:
https://docs.oracle.com/javase/tutorial/jdbc/basics/processingsqlstatements.html
Bạn có thể xem các tutorials khác với JDBC tại đây:
https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html