μλ¨λνκ΅ UMC 9κΈ° Spring Boot ννΈ λ―Έμ λ° μ½λ 리뷰 μ μ₯μ
- Role: Spring Part Leader (ννΈμ₯)
- Period: 2025.09 ~ 2025.12
- Schedule: λ§€μ£Ό κΈμμΌ 16:30 ~ 18:30 (Offline, μλ¨λνκ΅ λμκ΄)
- Goal: Spring Bootμ ν΅μ¬ κ°λ νμ΅ λ° μ€μ λ―Έμ μν, μνΈ μ½λ 리뷰λ₯Ό ν΅ν λλ° μ±μ₯
λ§€μ£Ό Spring Bootμ ν΅μ¬ μ£Όμ λ₯Ό νμ΅νκ³ μ΄μ λν λ―Έμ μ μννμμ΅λλ€.
| Week | Topic | Key Keywords | Study Note |
|---|---|---|---|
| 0μ£Όμ°¨ | λ°μ΄ν°λ² μ΄μ€ μ€κ³ | ERD, μ κ·ν |
π μμ½ λ³΄κΈ° |
| 1μ£Όμ°¨ | SQL - Query μμ± | join, subquery, νΈλμμ
, where |
π μμ½ λ³΄κΈ° |
| 2μ£Όμ°¨ | Spring Boot κ°λ | μ μ΄ μμ , μμ‘΄μ± μ£Όμ
, Bean |
π μμ½ λ³΄κΈ° |
| 3μ£Όμ°¨ | API μ€κ³ λ° κ°λ° | REST API, HTTP λ©μλ |
π μμ½ λ³΄κΈ° |
| 4μ£Όμ°¨ | JPA κΈ°μ΄ λ° νλ‘μ νΈ κ΅¬μ‘° | μν°ν° λ§€ν, N+1 λ¬Έμ , κ³μΈ΅ν, λλ©μΈν |
π μμ½ λ³΄κΈ° |
| 5μ£Όμ°¨ | JPA νμ© | Spring Data JPA, μμμ±, JPQL |
π μμ½ λ³΄κΈ° |
| 6μ£Όμ°¨ | QueryDSL | λμ 쿼리, QueryDSL |
π μμ½ λ³΄κΈ° |
| 7μ£Όμ°¨ | API μλ΅ ν΅μΌ & μλ¬ νΈλ€λ¬ | ApiResponse, DTO, 컨νΈλ‘€λ¬, μμΈμ²λ¦¬ |
π μμ½ λ³΄κΈ° |
| 8μ£Όμ°¨ | Swagger & Annotation | Swagger, 컀μ€ν
μ΄λ
Έν
μ΄μ
|
π μμ½ λ³΄κΈ° |
| 9μ£Όμ°¨ | Paging | Page, Slice |
π μμ½ λ³΄κΈ° |
| 10μ£Όμ°¨ | λ‘κ·ΈμΈ/νμκ°μ | Spring Security, Session, JWT |
π μμ½ λ³΄κΈ° |
UMC μ€μ μν¬λΆμ κΈ°λ°μΌλ‘, λ§€μ£Ό μ€ν°λ μ§νμ μν΄ μ κ° μ§μ μ¬κ΅¬μ±νκ³ μμ½ν νμ΅ μλ£μ
λλ€.
νμλ€μ΄ κ°λ
μ λ μ½κ² μ΄ν΄ν μ μλλ‘ μμ μ μ€λͺ
μ 보좩νμ΅λλ€.
Curriculum & Missionμ Study Noteλ λͺ¨λ μ΄κ³³μ μμ½λ³Έμ
λλ€.
- Repository: π Spring Boot Study Notes & Summary
- Description: μν¬λΆ ν΅μ¬ μμ½, μΆκ° 보좩 κ°λ μ 리, νΈλ¬λΈ μν ν ν¬ν¨
λ¨μν κ³Όμ μ μΆμ΄ μλ, Pull Request(PR) κΈ°λ°μ μ½λ 리뷰 λ¬Ένλ₯Ό μ μ°©μμΌ°μ΅λλ€.
ννΈμ₯μΌλ‘μ νμλ€μ μ½λλ₯Ό 리뷰νλ©° λ λμ μ€κ³μ ν΄λ¦° μ½λμ λν΄ λ
Όμνμ΅λλ€.
- Mission Clear: λ§€μ£Ό λ―Έμ κΈ°λ₯μ ꡬννκ³ λ³ΈμΈ λΈλμΉμ Push
- Pull Request:
DevelopλΈλμΉλ‘ PR μμ± - Code Review: ννΈμ₯ λ° νμ κ° μνΈ λ¦¬λ·° μ§ν (μΉμΈ μ Merge)
- Refactoring: νΌλλ°± λ°μ λ° μ½λ κ°μ
λ―Έμ (μ μ μ 보)κ³Ό μ μ μ μν κΈ°λ‘(λμ μ 보)μ ν ν μ΄λΈμμ κ΄λ¦¬νλ €λ μ€κ³λ₯Ό μ§μ νκ³ , μ€κ° λ§€ν ν μ΄λΈ(UserMission)μ λμ νμ¬ μ± μμ λΆλ¦¬νλλ‘ κ°μ΄λνμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ°μ΄ν° μ€λ³΅μ λ§κ³ 쿼리 μμ±μ ν¨μ¨μ±μ λμμ΅λλ€.
λͺ¨λ 쿼리λ₯Ό νλνλ κ²μ΄ μλλΌ, PK κΈ°λ° λ¨κ±΄ μ‘°νμ ν¨μ¨μ±κ³Ό μ°κ΄κ΄κ³ λͺ©λ‘ μ‘°νμ N+1 λ¬Έμ λ₯Ό λͺ νν ꡬλΆνμ΅λλ€. μ±λ₯ μ΄μκ° λ°μνλ μ§μ μλ§ μ λ³μ μΌλ‘ Fetch Joinμ λμ νμ¬ μμ°μ±κ³Ό μ±λ₯μ κ· νμ λ§μ·μ΅λλ€.
Case 1. ν¨μ¨μ μΈ μ‘°ν: λ¨κ±΄ μ‘°νλ κΈ°λ³Έ λ©μλ μ μ§λ₯Ό κΆμ₯

Case 2. μ±λ₯ μ΄μ ν΄κ²°: 리μ€νΈ μ‘°ν μ λ°μνλ N+1 λ¬Έμ μ Fetch Join μ μ©

νν°λ§ 쑰건μΈ
user_idκ° μ΄λ―Έ Review ν μ΄λΈμ FKλ‘ μ‘΄μ¬ν¨μ νμ νμ¬, λΆνμν User ν μ΄λΈκ³Όμ Joinμ μ κ±°νλλ‘ μ μνμ΅λλ€. 무μμμ μΈ μ°κ΄κ΄κ³ νμμ μ€μ΄κ³ 쿼리 μ±λ₯μ μ΅μ ννμ΅λλ€.
1. Facilitator: λλ° μ±μ₯μ μν κΈ°μ κ°μ΄λ
νμ κ° κΈ°μ 격차λ₯Ό μ€μ΄κ³ μ 체μ μΈ κ°λ° μλμ μν₯ νμ€ννλ λ° μ£Όλ ₯νμ΅λλ€.
- Onboarding Guide: Spring Bootκ° λ―μ νμμκ² 'Controller - Service - Repository - Entity'λ‘ μ΄μ΄μ§λ κ³μΈ΅ν μν€ν μ²(Layered Architecture)μ λ°μ΄ν° νλ¦μ λμννμ¬ μ€λͺ νκ³ , νλ‘μ νΈ μ μμ λμμ΅λλ€.
- Mentoring: μ§λλ₯Ό μ΄λ €μνλ νμμ λ°©μΉνμ§ μκ³ 1:1λ‘ μ΄λμ΄ μ μ μμ£Όλ₯Ό λͺ©νλ‘ νμ΅λλ€.
2. Deep Dive: μ§μν νꡬμ μ§μ 곡μ (N+1 λ¬Έμ )
λ¨μν κ°λ
μκΈ°κ° μλ, μ리 μ΄ν΄λ₯Ό μ΅μ°μ μΌλ‘ νμ΅λλ€.
- Collaborative Learning: 'N+1 λ¬Έμ 'μ λ°μ μμΈκ³Ό ν΄κ²°λ²(Fetch Join, Entity Graph λ±)μ΄ λͺ νν μ΄ν΄λμ§ μμ, 2μ£Όκ°μ μ§μ€ νꡬ κΈ°κ°μ κ°μ‘μ΅λλ€.
- Seminar: κ°μ μ‘°μ¬ν λ΄μ©μ λ°νμΌλ‘ μΈλ―Έλ νμμ μνΈ λ°νλ₯Ό μ§ννκ³ , μ΄λ₯Ό ν΅ν΄ νμ μ μμ΄ ν΄λΉ μ΄μλ₯Ό μλ²½νκ² μμ§νκ³ μ€λ¬΄μ μ μ©ν μ μκ² λμμ΅λλ€.
3. Insight: μ½λ 리뷰μ μ§μ ν κ°μΉ
μ΄λ² νλμ ν΅ν΄ μμ 첫 μ½λ 리뷰λ₯Ό κ²½ννλ©° κ°λ°μλ‘μ μμΌλ₯Ό νμ₯νμ΅λλ€.
- Readerμ κ΄μ : 'μμ±νλ μ½λ'μμ 'μ½νλ μ½λ'λ‘ κ΄μ μ΄ μ νλμμ΅λλ€. νμΈμ μ½λλ₯Ό μ½μΌλ©° μλλ₯Ό νμ νλ κ³Όμ μμ²΄κ° ν° κ³΅λΆκ° λμμ΅λλ€.
- Feedback Loop: μ½λ λ¦¬λ·°κ° λ¨μν μ§μ μ΄ μλλΌ, μλ‘μ μκ°μ λ§μΆκ³ λ λμ μ€κ³λ₯Ό μ°Ύμκ°λ νμ μ ν΅μ¬ κ³Όμ μμ κΉ¨λ«κ² λμμ΅λλ€.

