Transaction trong JDBC




Nói chung, Transaction (giao tác) là một tiến trình xử lý, có điểm bắt đầu và điểm kết thúc, gồm nhiều phép thực thi nhỏ, trong đó mỗi phép thực thi được thực thi một cách tuần tự và độc lập theo nguyên tắc là tất cả thành công hoặc một phép thực thi thất bại thì cả tiến trình thất bại.

Các thuộc tính ACID miêu tả rõ ràng nhất về Transaction. 4 thuộc tính này bao gồm Atomicity, Consistency, Isolation và Durability, trong đó:

  • Atomicity nghĩa là tất cả thành công hoặc không.

  • Consistency bảo đảm rằng tính đồng nhất của dữ liệu.

  • Isolation bảo đảm rằng Transaction này là độc lập với Transaction khác.

  • Durability nghĩa là khi một Transaction đã được ký thác thì nó sẽ vẫn tồn tại như thế cho dù xảy ra các lỗi, …

Theo mặc định, kết nối JDBC của bạn là trong chế độ auto-commit, tức là mỗi lệnh SQL được ký thác tới Database mỗi khi nó kết thúc. Điều này là tốt với các ứng dụng nhỏ khi mà số lượng đơn vị công việc là nhỏ và không phức tạp. Với các ứng dụng trung bình và lớn, việc quản lý riêng Transaction giúp bạn cải thiện rõ rệt hiệu suất và duy trì tính toàn vẹn của tiến trình.

Trong JDBC, Connection Interface cung cấp các phương thức sau để quản lý transaction:

1. void setAutoCommit(boolean status)

Là true theo mặc định. Để thao tác với Transaction, bạn nên thiết lập về false.

2. void commit()

Để ký thác các thay đổi bạn đã thực hiện.

3. void rollback()

Xóa tất cả các thay đổi đã được thực hiện trước đó và quay về trạng thái trước khi thực hiện thay đổi.

4. setSavepoint(String ten_cua_savepoint)

Định nghĩa một savepoint mới. Phương thức này cũng trả về một đối tượng Savepoint.

5. releaseSavepoint(Savepoint ten_cua_savepoint)

Xóa một savepoint. Phương thức này nhận một đối tượng Savepoint làm tham số.

6. rollback (String ten_cua_savepoint)

Quay về trạng thái của savepoint đã cho.

Bởi vì phần ví dụ là khá dài, mình sẽ chia chương này thành 3 chương. Bạn tiếp tục theo dõi hai chương tiếp theo để tìm hiểu ví dụ chi tiết cho hai hoạt động Commit & Rollback và sử dụng Savepoint.