์คํ๋ฅดํ87 [ TIL ] ํ๋ฌ์ค ํ๋ก์ ํธ_Day 6 ์ค๋ ํ ๊ณต๋ถ ๐ง ํ๋ก์ ํธ์ ์บ์ ์ ์ฉํ๋ฃจ์ข ์ผ ๊ณต๋ถํ๋ ์บ์๋ฅผ ํ๋ก์ ํธ์ ์ ์ฉํ๋ค. ๊ฒ์์ด๋ฅผ ํตํด ์ํ๋ค์ ์กฐํํ ๋์ ์ธ๊ธฐ ๊ฒ์์ด ์กฐํํ ๋ ์บ์๋ฅผ ์ ์ฉํ๋ค. ํ์ง๋ง ๊ฒ์์ด๋ฅผ ํตํด ์ํ๋ค์ ์กฐํํ ๋ ์ฌ์ฉํ ๊ฒ์์ด๋ฅผ DB์ ์ ์ฅํ๊ฑฐ๋ count ์๋ฅผ ์ฆ๊ฐ์์ผ์ผ ํ๊ธฐ ๋๋ฌธ์ DB์ Cache ๊ฐ์ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ํฌ๊ฒ ๋์ง ์์๋ค.์ธ๊ธฐ ๊ฒ์์ด๋ ์กฐ๊ธ ๋ฌ๋๋ค. ConcurrentHaspMap์ ์ด์ฉํด์ ์บ์์ ๊ฒ์์ด๋ฅผ ๋ชจ๋ ์ ์ฅํ๊ณ ๋ง์ด ์ ์ฅ๋ ์์๋๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ๋์ด ์กฐํ๋๊ฒ๋ ๋ก์ง์ ๊ตฌํํ๋๋ DB์์ ์ง์ ์ธ๊ธฐ ๊ฒ์์ด๋ฅผ ์กฐํํ๋ ๊ฒ๊ณผ Cache์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ์๋ ์ฐจ์ด๊ฐ ์กด์ฌํ๋ค.ํ๋ก์ ํธ์ Redis ์ ์ฉ๊ทธ๋ค์์ ์บ์๋ฅผ ์ ์ฉํ๋ ๋ถ๋ถ์ Redis๋ก ๋ณ๊ฒฝํด ์ฃผ๋ ์์ ์ ์งํํ๋ค.์๊ฐ๋ณด๋ค R.. 2025. 2. 5. [ TIL ] ํ๋ฌ์ค ํ๋ก์ ํธ_Day 5 ์ค๋ ํ ๊ณต๋ถ ๐ง ์บ์ ๊ณต๋ถํ๋ก์ ํธ์ ์บ์๋ฅผ ์ด๋ป๊ฒ ์ ์ฉํ ์ ์์๊น?์คํ ๋ค๋๋ฐ Redis ์ธ์ ๋ฃ๊ธฐ ์ค๋ ํ๋ฃจ ์ ๋ฆฌ โ๏ธ ๋ด์ผ ๊ณํ โฐ 2025. 2. 5. [ TIL ] Kotlin ๋ฌธ๋ฒ ๊ธฐ์ด/์ฌํ_Day 4 ์ค๋ ํ ๊ณต๋ถ ๐ง ํ์ ๊ณผ์ ํด๊ฒฐSpring Security์ธ์ฆ, ๊ถํ ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ ๋ณดํธ ๊ธฐ๋ฅ์ ํฌํจํ์ฌ ์น ๊ฐ๋ฐ ๊ณผ์ ์์ ํ์์ ์ธ ์ฌ์ฉ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ๊ตฌํํ๋๋ฐ ๋์์ ์ฃผ๋ Spring์ ๊ฐ๋ ฅํ ํ๋ ์์ํฌ์ด๋ค.์ฌ์ฉํ๋ ์ด์ Spring Security๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ Spring์ ์ํ๊ณ์์ ๋ณด์์ ํ์ํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์ ์ ์ฅ์์ ์ผ์ผ์ด ๋ณด์ ๊ด๋ จ ๋ก์ง์ ์์ฑํ์ง ์์๋ ๋๋ค๋ ์ฅ์ ์ด ์๋ค. Spring Security๋ Spring์ด๋ผ๋ ํ๋ ์์ํฌ์์ ํ์ฉํ๊ธฐ ์ ์ ํ ๊ตฌ์กฐ๋ก, ๋ณด์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ํ์ฉํ๊ธฐ ์ข๋ค. ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ฝ๋๋ฅผ ์ง์ ์์ฑํ ๊ฒฝ์ฐ Spring์์ ์ถ๊ตฌํ๋ IoC/DI ํจํด๊ณผ ๊ฐ์ ํ์ฅ ํจํด์ ๊ณ ๋ คํ์ฌ ์ธ์ฆ/์ธ๊ฐ ๋ถ๋ถ์ ์ง์ ๊ฐ๋ฐํ๊ธฐ ์ฝ์ง ์์ง๋ง.. 2025. 1. 24. [ TIL ] Kotlin ๋ฌธ๋ฒ ๊ธฐ์ด/์ฌํ_Day 3 ์ค๋ ํ ๊ณต๋ถ ๐ง QueryDSL ์ฑ๋ฆฐ์ง๋ฐ ์ธ์ ๋ฃ๊ธฐ๊ณผ์ ์ ์ ์ฉํ๊ธฐ ์ํด QueryDSL ๊ณต๋ถSQL, JPQL ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ Java ์ฝ๋๋ก ์์ฑํ ์ ์๋๋ก ํด์ฃผ๋ ORM ๊ธฐ๋ฐ ์ฟผ๋ฆฌ ๋น๋SQL์ Java ์ฝ๋๋ก ์์ฑํ๋ฉด์, ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋ํญ ๊ฐ์ ๋๋ค.๋์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ๋งค์ฐ ์ ์ฐํ๋ค.์ด๊ธฐ ์ธํ ์ด ๋งค์ฐ ๋ณต์กํ๋ค.Q ํด๋์ค ์์ฑ์ด ํ์ํ๋ค.๊ณผ์ ํด๊ฒฐJPQL๋ก ์์ฑ๋ ๋ฉ์๋๋ฅผ QueryDSL๋ก ๋ณ๊ฒฝ์ธ์ ์์ ๋ฐฐ์ด๋๋ก ์ด๊ธฐ ์ธํ todoId๋ฅผ ํตํด ์ผ์ ์ ์กฐํํ๋ ๊ฐ๋จํ ๋ฉ์๋๋ผ์ ์ฐจ๊ทผ์ฐจ๊ทผ ์ฝ๋ ์์ฑ@Repository@RequiredArgsConstructorpublic class TodoQueryRepository { private final JPAQueryFactory queryFactor.. 2025. 1. 23. [ TIL ] Kotlin ๋ฌธ๋ฒ ๊ธฐ์ด/์ฌํ_Day 1 ์ค๋ ํ ๊ณต๋ถ ๐ง ๊ฐ์ธ ๊ณต๋ถ (BaseEntity, GlobalExceptionHandler)BaseEntity์ํฐํฐ(Entity) : ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํด๊ฐ ํธํ๋ค.์ธ์คํด์ค(Instance) : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ ๋ด์ฉ์ ์ ์ฒด ์งํฉ์ ์๋ฏธํ๋ค.์์ฑ(Attribute) : ์ธ์คํด์ค์ ๊ตฌ์ฑ์์๋ก์จ ๋ ์ด์ ๋ถ๋ฆฌ๋์ง ์๋ ๋จ์๋ก, ์ ๋ฌด์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค.JPA๋ฅผ ์ฌ์ฉํ๋ฉฐ ์ํฐํฐ ํด๋์ค๋ฅผ ์ค๊ณํ ๋ ๊ณตํต ์์ฑ์ธ created_at, updated_at ์ปฌ๋ผ์ ๋ํด ๋ชจ๋ ์ํฐํฐ ํด๋์ค์์ ๊ณตํต์ ์ผ๋ก ์์ ํ ๊ฐ๋ฅ์ฑ์ด ๋ณด์ฌ ํด๋์ค๋ฅผ ๋ถ๋ฆฌํ ๊ฒ์ด๋ค.์์ฑ์ผ, ์์ ์ผ์ด ๊ณตํต ์์ฑ์ผ๋ก ํด๋นํ๋ค. ์ด ์ฝ๋๋ค์ ์ํฐํฐ์ ๋ชจ๋ ์ ์ด์ค ๊ฒฝ์ฐ ์ฝ๋์ ์ค๋ณต์ด ๋ฐ์ํ๋ค. ์ด๋ฐ ์ฝ๋์ ์ค๋ณต์.. 2025. 1. 21. [ TIL ] JPA ์ฌํ_Day 7 ์ค๋ ํ ๊ณต๋ถ ๐ง ํ์ ๊ณผ์ Level 2 (Cascade, N+1)CascadeType.ALL์ ์ฌ์ฉํ๋ฉด ์ํ์ฑ์ด ๋๋ฌด ํฌ๋ค. ๊ทธ๋์ ALL์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ PERSIST๋ฅผ ํตํด ์๋์ผ๋ก ๋ฑ๋ก๋ ์ ์๋๋ก ํด์ฃผ๋ ๊ฒ์ด ๋ ์์ ํ๋ค.FetchType = LAZY์ Fetch Join์ ํจ๊ป ์ด์ฉํด์ N+1 ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.FeFetch Join๊ณผ @EntityGraph ๋ ์ค ํ๋๋ก N+1์ ํด๊ฒฐํ ์ ์๋๋ฐ, ๊ทธ์ค์์ Fetch Join์ด inner join๊ณผ outer join ์ค์์ ์ ํํ ์ ์๊ธฐ ๋๋ฌธ์ Fetch Join์ ์ฌ์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.์คํ ๋ค๋๋ฐ ์ธ์ ๋ฃ๊ธฐDocker ์ฌ์ฉํด์ MySQL๊ณผ Redis image ๋ถ๋ฌ์ค๊ณ IntelliJ์ ์ฐ๋์์ผ ๋ณด๊ธฐ ์ค๋ ํ๋ฃจ ์ ๋ฆฌ โ.. 2025. 1. 20. ์ด์ 1 2 3 4 5 6 7 ยทยทยท 15 ๋ค์