Skip to content

[๐ŸŒฑ JPA ๋ฐฉํƒˆ์ถœ ์˜ˆ์•ฝ ๋Œ€๊ธฐ] ๋„์šฐ๋„ˆ(ํ•œ์ˆ˜์ง„) ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#583

Open
Soojin6943 wants to merge 5 commits into
woowacourse:soojin6943from
Soojin6943:jpa-step1
Open

[๐ŸŒฑ JPA ๋ฐฉํƒˆ์ถœ ์˜ˆ์•ฝ ๋Œ€๊ธฐ] ๋„์šฐ๋„ˆ(ํ•œ์ˆ˜์ง„) ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#583
Soojin6943 wants to merge 5 commits into
woowacourse:soojin6943from
Soojin6943:jpa-step1

Conversation

@Soojin6943

@Soojin6943 Soojin6943 commented Jun 18, 2026

Copy link
Copy Markdown

์ฒดํฌ ๋ฆฌ์ŠคํŠธ

  • ๋ฏธ์…˜์˜ ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ–ˆ๋‚˜์š”?
  • Gradle test๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ†ต๊ณผํ–ˆ๋‚˜์š”?
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋‚˜์š”?

๋ฒ ์ด์Šค ์ฝ”๋“œ ์„ ํƒ ์ฒดํฌ

  • ์ด์ „ ๋ฏธ์…˜์˜ ๋‚ด ์ฝ”๋“œ์—์„œ ์‹œ์ž‘
  • ์ด์ „ ๋ฏธ์…˜์˜ ํŽ˜์–ด์˜ ์ฝ”๋“œ์—์„œ ์‹œ์ž‘

์–ด๋–ค ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜์—ฌ ๋ฆฌ๋ทฐํ•ด์•ผ ํ• ๊นŒ์š”?

๊ฐœ๋ณ„ ๋„๋‹ฌ ์ง€์ 

1๋‹จ๊ณ„

  • Reservation, ReservationTime, Theme, ReservationWaiting ๋งคํ•‘ ๋ณ€ํ™˜, ์—ฐ๊ด€ ๊ด€๊ณ„ ๋งคํ•‘

2๋‹จ๊ณ„

  • ๋ณธ์ธ ์˜ˆ์•ฝ ์กฐํšŒ ๋งคํ•‘ ๋ณ€ํ™˜ ์ค‘

๋ฐœํ–‰ SQL ๋ฐœ์ทŒ

์˜ˆ์•ฝ๋œ ์‹œ๊ฐ„ ID ์กฐํšŒ (JPQL)

SELECT r.time.id FROM Reservation r WHERE r.date = :date AND r.theme.id = :themeId

์ธ๊ธฐ ํ…Œ๋งˆ ์กฐํšŒ (Native Query ์œ ์ง€)

SELECT t.id, t.name, t.description, t.thumbnail_url
FROM reservation r
INNER JOIN theme t ON r.theme_id = t.id
WHERE r.date >= ? AND r.date <= ?
GROUP BY t.id, t.name, t.description, t.thumbnail_url
ORDER BY COUNT(*) DESC, t.id ASC
LIMIT ?

๋ง์„ค์ธ ๊ฒฐ์ •

  • findReservedTimeIdsByDateAndThemeId: ์ง์ ‘ ์ฟผ๋ฆฌ(JPQL)๋กœ ID๋งŒ ๋ฝ‘์„์ง€, Reservation ์ „์ฒด๋ฅผ ๊ฐ€์ ธ์™€ ์ŠคํŠธ๋ฆผ ํ•„ํ„ฐ๋งํ• ์ง€
    • ์ฟผ๋ฆฌ๋กœ id๋งŒ ๋ฝ‘๊ธฐ๋กœ ๊ฒฐ์ •
      • ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” time_id์ด์ง€๋งŒ reservation ์ „์ฒด๋ฅผ ๊ฐ€์ ธ์˜ฌ ๊ฒฝ์šฐ ํ•„์š”์— ๋น„ํ•ด ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์˜๋„์˜ ๋ช…ํ™•์„ฑ์ด ๋–จ์–ด์ง„๋‹ค๋Š” ์ ์„ ๊ณ ๋ ค

ํ”๋“ค๋ฆฐ ํ•œ ์žฅ๋ฉด

LAZY๋ฅผ ์ ์šฉํ•œ ๋’ค findById().getTime().getStartAt()๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์˜ˆ์ƒํ–ˆ๋˜ ์ถ”๊ฐ€ SELECT ๋Œ€์‹  LazyInitializationException์ด ๋ฐœ์ƒํ–ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” LAZY ์„ค์ •์ด ์ž˜๋ชป๋œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์›์ธ์€ ํŠธ๋žœ์žญ์…˜์„ ์ ์šฉํ•˜์ง€ ์•Š์•„์„œ ์—ฐ๊ด€ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋Š” ์‹œ์ ์— ์ด๋ฏธ ์„ธ์…˜์ด ์ข…๋ฃŒ๋˜์–ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.

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