๋ฌธ์ : ์์ฝ ๋ชฉ๋ก, ํ์ฐจ ๋ชฉ๋ก ์กฐํ ์ ์ฐ๊ด ์ํฐํฐ ์ ๊ทผ ์ ์์ธ ๋ฐ์
์์ธ : JPA ์ง์ฐ ๋ก๋ฉ(Lazy Loading) ์ค์ ์ผ๋ก ํธ๋์ญ์ ์ข ๋ฃ ํ ํ๋ก์ ๊ฐ์ฒด์ ์ ๊ทผ ์ ์ธ์ ์ด ์์ด ์ด๊ธฐํ ๋ถ๊ฐ
ํด๊ฒฐ : Repository์ fetch join ์ฟผ๋ฆฌ ์ถ๊ฐ
@Query("SELECT r FROM Reservation r JOIN FETCH r.seat JOIN FETCH r.user WHERE r.user.id = :userId")
List<Reservation> findByUserId(@Param("userId") Long userId);
๋ฐฐ์ด ์ : ์ฐ๊ด ์ํฐํฐ๋ฅผ ํจ๊ป ์กฐํํด์ผ ํ๋ ๊ฒฝ์ฐ fetch join์ผ๋ก ํ ๋ฒ์ ๋ก๋ฉํด์ผ ํธ๋์ญ์ ๋ฒ์ ๋ฐ์์๋ ์์ ํ๊ฒ ์ ๊ทผ ๊ฐ๋ฅ
๋ฌธ์ : Redis TTL์ด ๋ง๋ฃ๋์ด๋ DB์ ์ข์ ์ํ๊ฐ PENDING์ผ๋ก ์ ์ง
์์ธ : Redis TTL ๋ง๋ฃ๋ Redis์์๋ง ์ฒ๋ฆฌ๋๊ณ DB์๋ ๋ฐ์๋์ง ์์
ํด๊ฒฐ : Spring Scheduler๋ก 30์ด๋ง๋ค expiresAt์ด ์ง๋ PENDING ์์ฝ์ ์กฐํํด CANCELLED๋ก ์ ๋ฐ์ดํธํ๊ณ ์ข์ ์ํ๋ฅผ AVAILABLE๋ก ๋ณต๊ตฌ
๋ฐฐ์ด ์ : Redis TTL๊ณผ DB ์ํ๋ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ๋๋ฏ๋ก ๋ณ๋์ ์ ํฉ์ฑ ์ ์ง ๋ก์ง์ด ํ์ํจ
๋ฌธ์ : ํ๋ก ํธ(5173)์์ ๋ฐฑ์๋(8080) ์์ฒญ ์ CORS ์ฐจ๋จ
์์ธ : Spring Security ์ค์ ์ ํ์ฉ Origin ๋ฏธ๋ฑ๋ก
ํด๊ฒฐ : SecurityConfig์ CorsConfigurationSource ๋น ๋ฑ๋ก, ๋ฐฐํฌ ํ๊ฒฝ Origin์ application.yml ํ๊ฒฝ๋ณ์๋ก ๋ถ๋ฆฌํด ์ฝ๋์ ๋ ธ์ถ ๋ฐฉ์ง