Repository & Queries

JpaRepository, derived query, @Query, projection, Specification, auditing, pagination (Pageable, OFFSET vs keyset).

7 bài · ~69 phútMiễn phí

Nội dung

Danh sách bài học

  1. 01

    Repository & Queries — tổng quan

    Module này mổ cách query dữ liệu qua Spring Data: từ derived query, @Query, projection, Specification, tới pagination hiệu năng.

    ~4 phút
  2. 02

    JpaRepository & Derived Queries — zero-code query từ tên method

    Spring Data JPA parse tên method thành JPQL tự động lúc startup. Bài này bóc interface hierarchy CrudRepository→PagingAndSortingRepository→JpaRepository, cơ chế Spring Data parse findByStatusAndOwnerId thành JPQL rồi Hibernate dịch sang SQL, và khi nào derived query đủ — khi nào nên nhường chỗ cho @Query.

    ~12 phút
  3. 03

    @Query, @Modifying và Projection — viết query tuỳ chỉnh và trả về đúng shape

    Ba kỹ thuật bổ sung derived query: @Query cho JPQL hoặc native SQL khi method name không đủ; @Modifying cho UPDATE/DELETE với pitfall persistence context stale; projection (interface, DTO, class-based) để chỉ fetch field cần thay vì load full entity.

    ~12 phút
  4. 04

    Specification & JPA Auditing — dynamic filter và timestamp tự động

    Specification bọc JPA Criteria API để build dynamic query không cần viết N method. JPA Auditing tự set createdAt/updatedAt qua AuditingEntityListener. Bài này đào sâu cơ chế bên dưới cả hai: Predicate tree, PredicateVisitor, EntityCallback lifecycle.

    ~12 phút
  5. 05

    Pageable & Sort — phân trang, sắp xếp, validate, projection DTO

    Pageable wrap LIMIT/OFFSET SQL, Spring tự sinh 2 câu query (data + COUNT), kết quả trả về trong Page chứa content và totalElements. Bài này đào sâu cơ chế bên dưới: vì sao Page cần COUNT, vì sao phải cap size tránh DoS, sort multi-field, và projection DTO kết hợp Pageable.

    ~13 phút
  6. 06

    Pagination performance — OFFSET vs keyset, Slice bỏ COUNT

    OFFSET pagination chậm dần tuyến tính theo depth vì DB phải scan và bỏ N row trước khi trả kết quả. Keyset/cursor pagination nhảy thẳng vào vị trí qua B-tree index, tốc độ hằng số. Slice loại COUNT query. Bài này giải thích cơ chế từng chiến lược, trade-off, và khi nào chọn cái nào.

    ~12 phút
  7. 07

    Repository & Queries — tổng kết

    Tóm tắt Repository & Queries.

    ~4 phút