Relationships & Transactions

Associations & fetch, cascade & N+1, @Transactional AOP proxy, propagation & isolation.

6 bài · ~61 phútMiễn phí

Nội dung

Danh sách bài học

  1. 01

    Relationships & Transactions — tổng quan

    Module này mổ 2 chủ đề khó nhất JPA: quan hệ entity (fetch, N+1) và transaction (proxy, propagation).

    ~4 phút
  2. 02

    Associations & Fetch Type — @OneToMany, @ManyToOne, LAZY/EAGER, LazyInitializationException

    Bài này bóc 4 kiểu association JPA, cơ chế owning side vs inverse side (FK nằm ở đâu trong schema), fetch type mặc định của từng annotation và lý do nên override về LAZY, cùng LazyInitializationException khi truy cập proxy ngoài transaction.

    ~14 phút
  3. 03

    Cascade & N+1 — propagation, orphanRemoval và bug hiệu năng nguy hiểm nhất JPA

    Cascade type lan truyền operation từ entity cha xuống entity con; orphanRemoval xoá entity con khi tách khỏi collection. N+1 problem xảy ra khi lazy load collection trong vòng lặp — 100 project × 1 query tasks = 101 query thay vì 1. Bài này giải thích cơ chế vì sao xảy ra và 4 cách fix (JOIN FETCH, EntityGraph, batch size, DTO projection).

    ~14 phút
  4. 04

    @Transactional & AOP proxy — cơ chế begin/commit/rollback bên dưới

    @Transactional không magic — Spring tạo CGLIB proxy wrap method để chèn begin/commit/rollback. Bài này bóc đúng một concept: proxy hoạt động thế nào, rollback rule RuntimeException vs checked, và self-invocation bypass proxy — pitfall kinh điển khiến @Transactional mất tác dụng im lặng.

    ~12 phút
  5. 05

    Propagation, Isolation & readOnly — kiểm soát transaction boundary

    Ba thuộc tính @Transactional quan trọng nhất sau khi đã hiểu AOP proxy: propagation (REQUIRED vs REQUIRES_NEW — B chạy trong T1 hay mở T2 riêng?), isolation level (READ_COMMITTED ngăn dirty read; REPEATABLE_READ ngăn non-repeatable; SERIALIZABLE ngăn phantom), và readOnly hint tắt dirty checking để tăng hiệu năng read endpoint.

    ~13 phút
  6. 06

    Relationships & Transactions — tổng kết

    Tóm tắt Relationships & Transactions.

    ~4 phút