Tổng Kết Module 06: Quan Hệ Thực Thể và Quản Trị Giao Dịch
Hệ thống hóa kiến thức về JPA Associations, Fetch Types, giải quyết dứt điểm bài toán N+1, cơ chế @Transactional AOP Proxy, Propagation và Isolation.
Bạn vừa hoàn thành Module 06 về hai chủ đề then chốt và phức tạp nhất trong JPA & Spring Data: liên kết thực thể (relationships) và quản trị giao dịch declarative (@Transactional). Dưới đây là bảng tổng hợp nguyên lý kỹ thuật và danh sách tự đánh giá năng lực.
Cheat sheet
| Khái niệm | Nguyên lý kỹ thuật cốt lõi | Bài học |
|---|---|---|
| Owning vs Inverse Side | Phía có @JoinColumn giữ FK và kiểm soát SQL; @OneToMany(mappedBy) là Inverse Side. | 01 |
| Fetch Types | @ManyToOne mặc định EAGER (cần override LAZY); giải quyết LazyInitializationException bằng DTO. | 01 |
| N+1 Problem & Fix | Phát sinh do duyệt lazy proxy trong vòng lặp; giải quyết bằng JOIN FETCH, @EntityGraph, BatchSize, DTO. | 02 |
| AOP Proxy & Rollback | CGLIB Proxy can thiệp BEGIN/COMMIT; mặc định chỉ rollback khi gặp RuntimeException hoặc Error. | 03 |
| Cạm Bẫy Self-Invocation | Lời gọi nội bộ qua this bỏ qua Proxy, vô hiệu hóa hoàn toàn @Transactional. Cần tách Service. | 03 |
| Propagation | REQUIRED gộp chung transaction (All-or-Nothing); REQUIRES_NEW mở transaction riêng biệt cho Audit Log. | 04 |
| Isolation & readOnly | READ_COMMITTED chuẩn Postgres; readOnly = true tắt dirty checking và tối ưu bộ nhớ heap. | 04 |
✅ Self-assessment
Bạn đã làm chủ hoàn toàn Module 06 khi tự tin hoàn thành các mục tiêu sau:
- Explain 4 association + fetch type (LAZY/EAGER default)
- Diagnose N+1 problem và 4 cách fix
- Explain @Transactional AOP proxy + rollback rule + self-invocation
- Compare propagation REQUIRED vs REQUIRES_NEW và isolation level
Liên hệ các module khác
- Module 07: Migration & Capstone Project: Đưa toàn bộ kiến thức vào thực chiến với Flyway database migration, cấu trúc dự án chuẩn production và bài kiểm tra Capstone tổng kết khóa học.
Module tiếp theo: Migration & Capstone Project
Bài này có giúp bạn hiểu bản chất không?
Bài này đáng gửi cho bạn học cùng?
Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.
Transaction Propagation, Isolation và Tối Ưu Hóa readOnly
Bài tiếp Migration & CapstoneMigration & Capstone — tổng quan
Lộ trình Junior Java Backend Developer
✓ Bạn vừa đi hết chặng Spring Data JPA (16/21)
Chặng tiếp: Database migration (Flyway) — “Flyway Migration: Quản Trị Phiên Bản Schema Như Mã Nguồn”
Thảo luận & góp ý
Hỏi đáp về bài này