Tổng Kết Module 05: Repository và Kỹ Thuật Truy Vấn
Hệ thống hóa kiến thức JpaRepository, Derived Queries, @Query, DTO Projection, Specification dynamic filter, JPA Auditing và tối ưu hóa phân trang.
Bạn vừa hoàn thành Module 05 về các kỹ thuật truy vấn dữ liệu từ cơ bản đến chuyên sâu trong Spring Data JPA. Dưới đây là bảng tổng hợp các khái niệm nền tảng 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 |
|---|---|---|
| Derived Queries | Phân tích tên method lúc startup (PartTree) → JPQL → SQL theo dialect; Fail-Fast nếu sai thuộc tính. | 01 |
| @Query & @Modifying | Viết JPQL hoặc Native SQL; bắt buộc @Modifying(clearAutomatically = true) khi chạy bulk DML. | 02 |
| DTO Projection | Cú pháp SELECT new com.pkg.Dto(...) giúp database chỉ SELECT đúng các cột hiển thị, loại bỏ dư thừa. | 02 |
| Specification | Đóng gói Criteria API để build Predicate tree động tại runtime, tự động bỏ qua các trường null. | 03 |
| JPA Auditing | Hook vào @PrePersist và @PreUpdate qua AuditingEntityListener để tự động gán timestamp. | 03 |
| Page vs Slice | Page<T> sinh thêm câu COUNT(*) để tính tổng trang; Slice<T> lấy size + 1 để tối ưu cho Mobile. | 04, 05 |
| Keyset Pagination | Sử dụng composite cursor (createdAt, id) thực hiện B-tree seek đạt độ phức tạp $O(\log N)$ ở mọi trang sâu. | 05 |
✅ Self-assessment
Bạn đã làm chủ hoàn toàn Module 05 khi tự tin hoàn thành các mục tiêu sau:
- Implement derived query + @Query (JPQL/native) + projection
- Implement Specification dynamic query + JPA auditing
- Design pagination với Pageable, Sort
- Compare OFFSET vs keyset pagination performance
Liên hệ các module khác
- Module 06: Relationships & Transactions: Làm chủ các mối quan hệ
@OneToMany,@ManyToOne, cạm bẫy N+1 Query và cơ chế transaction declarative với@Transactional.
Module tiếp theo: Relationships & Transactions
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.
Hiệu Năng Phân Trang: OFFSET vs Keyset Cursor Pagination
Bài tiếp Relationships & TransactionsRelationships & Transactions — tổng quan
Lộ trình Junior Java Backend Developer
Chặng 16/21 · Spring Data JPA — bài 14/20 của chặng
Thảo luận & góp ý
Hỏi đáp về bài này