λ€ν¬ λͺ¨λ
π μ€μ Spring Boot 3 & DDD μν°νλΌμ΄μ¦ μν€ν μ² β
μ¬λ΄ κ°λ°μλ₯Ό μν λλ©μΈ μ£Όλ μ€κ³(DDD) λ° κ³ μ±λ₯ λ°±μλ μμ§λμ΄λ§ μ€λ¬΄ κ°μ΄λ
π κ΅μ¬ κ°μ β
λ³Έ κ΅μ¬λ Spring Boot 3, Java 21, JPA/Hibernate, PostgreSQL νκ²½μμ μ μ§λ³΄μμ±μ΄ λ°μ΄λ ν΄λ¦° λ°±μλ μν€ν μ²λ₯Ό ꡬμΆνλ κ³Όμ μ λ€λ£Ήλλ€.
- μν: π μκ³ μ€λΉ λ° κΈ°κ³ μ€
- λμ: Spring Boot κΈ°μ΄λ₯Ό λΌκ³ μν°νλΌμ΄μ¦ μν€ν μ²λ‘ λμ½νλ €λ λ°±μλ κ°λ°μ
- ν΅μ¬ ν€μλ: Domain-Driven Design, Hexagonal Architecture, QueryDSL, Virtual Threads, Spring Security AOP
πΊοΈ 컀리νλΌ λ‘λλ§΅ (μμ ) β
- Part 1. λ κ±°μ CRUDμμ λλ©μΈ λͺ¨λΈ ν¨ν΄μΌλ‘
- κ³μΈ΅ν μν€ν μ²μ νκ³μ λΉμ½ν λλ©μΈ λͺ¨λΈ(Anemic Domain Model)
- Entityμ Value Objectμ λΆλ¦¬, λΆλ³ κ°μ²΄ μ€κ³
- Part 2. μμμ± κ³μΈ΅κ³Ό 쿼리 μ΅μ ν
- JPA N+1 λ¬Έμ μ λ²ν¬ μ°μ°
- λ³΅ν© μΏΌλ¦¬λ₯Ό μν QueryDSL Repository ν¨ν΄
- Part 3. μ΄λ²€νΈ κΈ°λ° μν€ν
μ²μ λΆμ° νΈλμμ
- Spring ApplicationEventλ₯Ό νμ©ν λλ©μΈ μ΄λ²€νΈ λ°ν
- Outbox ν¨ν΄κ³Ό μ λ’°μ± μλ λ©μμ§