Skip to content

[πŸš€ 사이클2 - λ―Έμ…˜ (μ˜ˆμ•½ λ³€κ²½/μ·¨μ†Œμ™€ μ—λŸ¬ 처리)] μ›Œλ„¬ λ―Έμ…˜ μ œμΆœν•©λ‹ˆλ‹€.#443

Open
jeonwonjun wants to merge 13 commits into
woowacourse:jeonwonjunfrom
jeonwonjun:step2
Open

[πŸš€ 사이클2 - λ―Έμ…˜ (μ˜ˆμ•½ λ³€κ²½/μ·¨μ†Œμ™€ μ—λŸ¬ 처리)] μ›Œλ„¬ λ―Έμ…˜ μ œμΆœν•©λ‹ˆλ‹€.#443
jeonwonjun wants to merge 13 commits into
woowacourse:jeonwonjunfrom
jeonwonjun:step2

Conversation

@jeonwonjun
Copy link
Copy Markdown
Member

@jeonwonjun jeonwonjun commented May 14, 2026

체크 리슀트

  • λ―Έμ…˜μ˜ ν•„μˆ˜ μš”κ΅¬μ‚¬ν•­μ„ λͺ¨λ‘ κ΅¬ν˜„ν–ˆλ‚˜μš”?
  • Gradle testλ₯Ό μ‹€ν–‰ν–ˆμ„ λ•Œ, λͺ¨λ“  ν…ŒμŠ€νŠΈκ°€ μ •μƒμ μœΌλ‘œ ν†΅κ³Όν–ˆλ‚˜μš”?
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜λ‚˜μš”?

베이슀 μ½”λ“œ 선택 체크

  • 이전 λ―Έμ…˜μ˜ λ‚΄ μ½”λ“œμ—μ„œ μ‹œμž‘
  • 이전 λ―Έμ…˜μ˜ νŽ˜μ–΄μ˜ μ½”λ“œμ—μ„œ μ‹œμž‘

μ–΄λ–€ 뢀뢄에 μ§‘μ€‘ν•˜μ—¬ 리뷰해야 ν• κΉŒμš”?

μ•ˆλ…•ν•˜μ„Έμš” μ•„λ§ˆμ°Œ!

이번 λ―Έμ…˜μ€ Reservation μœ„μ£Όλ‘œ μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. μΆ”ν›„ Theme, ReservationTime에 λŒ€ν•΄μ„œλ„ μ˜ˆμ™Έμ²˜λ¦¬ μ§„ν–‰ν•  μ˜ˆμ •μž…λ‹ˆλ‹€!

μ§ˆλ¬Έμ€ μ–Έμ œλ“  ν™˜μ˜ν•©λ‹ˆλ‹€
이번 리뷰도 μž˜λΆ€νƒλ“œλ €μš” πŸ™‡πŸ»β€β™‚οΈ

κΆκΈˆν•œ 점

1. ErrorResponse의 μ±…μž„ λ²”μœ„

ν˜„μž¬ ErrorResponseμ—μ„œ μ‚¬μš©μžμ—κ²Œ λ‹€μŒ 행동(action)κΉŒμ§€ 전달할지 κ³ λ―Όν–ˆμŠ΅λ‹ˆλ‹€.
λ‹€μŒ ν–‰λ™κΉŒμ§€ μ „λ‹¬ν•˜κ²Œ λœλ‹€λ©΄ μœ μ—°μ„±μ΄ λ–¨μ–΄μ§€κ³ , μž‘μ€ μˆ˜μ •μ΄ λ°œμƒν•΄λ„ μ„œλ²„μ½”λ“œλ₯Ό μˆ˜μ •ν•΄μ•Όν•˜λŠ” 일이 λ°œμƒν•  것 κ°™μ•„μ„œ ν˜„μž¬λŠ” code, message만 μ „λ‹¬ν•˜κ²Œ ν–ˆμŠ΅λ‹ˆλ‹€.
λ°±μ—”λ“œλŠ” μ—λŸ¬ μ›μΈκΉŒμ§€λ§Œ μ±…μž„μ§€κ³ , μ‹€μ œ μ‚¬μš©μž 행동 μœ λ„λŠ” ν”„λ‘ νŠΈμ—μ„œ μ²˜λ¦¬ν•˜λŠ” 것이 더 μžμ—°μŠ€λŸ¬μš΄ κ΅¬μ‘°μΌκΉŒμš”?

μ˜ˆμ‹œ

{
  "code": "RESERVATION_ALREADY_EXISTS",
  "message": "이미 μ˜ˆμ•½λœ μ‹œκ°„μž…λ‹ˆλ‹€."
}

vs

{
  "code": "RESERVATION_ALREADY_EXISTS",
  "message": "이미 μ˜ˆμ•½μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€.",
  "action": "λ‹€λ₯Έ μ‹œκ°„μ„ μ„ νƒν•΄μ£Όμ„Έμš”."
}

2. Service ν…ŒμŠ€νŠΈμ˜ λ°©ν–₯μ„±

ReservationServiceTestμ—μ„œ 본인_μ˜ˆμ•½_λ³€κ²½_성곡과 같은 성곡 ν…ŒμŠ€νŠΈλŠ” DAO의 μž‘λ™ μ—¬λΆ€κ°€ ν•„μš”ν•œ ν…ŒμŠ€νŠΈλΌκ³  μƒκ°λ©λ‹ˆλ‹€.

Service ν…ŒμŠ€νŠΈμ—μ„œ μ‹€μ œ λ³€κ²½ κ²°κ³ΌκΉŒμ§€ 검증해야 ν•˜λŠ”μ§€,
μ•„λ‹ˆλ©΄ μ •μ±… νŒλ‹¨ ν›„ DAO 호좜 μ—¬λΆ€λ§Œ κ²€μ¦ν•˜λŠ” 것이 더 μ μ ˆν•œμ§€ κ³ λ―Όμž…λ‹ˆλ‹€.

μ˜ˆμ‹œ

then(reservationDao).should()
    .updateDateTimeById(...)

3. selectByIdμ—μ„œ Optional을 μ‚¬μš©ν•˜λŠ” 이유

κΈ°μ‘΄μ—λŠ” queryForObject()λ₯Ό μ‚¬μš©ν–ˆλŠ”λ°, Optional을 λ°˜ν™˜ν•˜κΈ° μœ„ν•΄ query() + findAny() λ°©μ‹μœΌλ‘œ λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.
이런 방식이 μžμ—°μŠ€λŸ¬μš΄μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

List<Reservation> reservations = jdbcTemplate.query(sql, rowMapper, id);
return reservations.stream().findAny();

jeonwonjun added 13 commits May 14, 2026 11:08
- μ§€λ‚œ λ‚ μ§œ, μ‹œκ°„μ— λŒ€ν•œ mockν…ŒμŠ€νŠΈ μΆ”κ°€
- 이미 μ‘΄μž¬ν•˜λŠ” μ˜ˆμ•½μ— λŒ€ν•œ mockν…ŒμŠ€νŠΈ μΆ”κ°€
- ν˜„μž¬ λ‚ μ§œ κΈ°μ€€μœΌλ‘œ 이후이고, λ‚ μ§œκ°€ λ™μΌν•˜λ‹€λ©΄ μ‹œκ°„μ΄ 이후인 μ˜ˆμ•½λ“€κ³Ό λΉ„κ΅ν•΄μ„œ timeId μ‚­μ œ
- λͺ‡κ°€μ§€ λ³€μˆ˜λͺ… μˆ˜μ •
- GlobalExceptionHandler μΆ”κ°€
- @Valid에 λŒ€ν•œ 검증
- λ‚ μ§œ ν˜•μ‹μ— λŒ€ν•œ 검증
λ°©νƒˆμΆœ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 관리 μ˜ˆμ™Έ
- μ§€λ‚œ μ‹œκ°„μ— λŒ€ν•œ μ˜ˆμ™Έ
- 이미 μ‘΄μž¬ν•˜λŠ” μ˜ˆμ•½μ— λŒ€ν•œ μ˜ˆμ™Έ
- μ•„μ΄λ””λ‘œ μ˜ˆμ•½ μ‘°νšŒμ‹œ μ—λŸ¬μ²˜λ¦¬
- μ§€λ‚œ μ˜ˆμ•½μ— λŒ€ν•œ λ³€κ²½ λΆˆκ°€
- μ‘΄μž¬ν•œ μ˜ˆμ•½ λ‚ μ§œ 및 μ‹œκ°„μœΌλ‘œ λ³€κ²½ λΆˆκ°€
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant