์๋ ํ์ธ์.
IT ๊ธฐ์ ๊ฐ๋ฐ์๋ก ๊ทผ๋ฌดํ๋ฉฐ, ๋๊ท๋ชจ ์์คํ ์ ์งํฑํ๊ธฐ ์ํด ๋ค์ํ ๊ธฐ์ ์ ํ์ฉํด๋ณด๊ณ ์์ต๋๋ค.
์ค๋ฌด ๊ด์ ์ ๊ฐ๋ฐ ์ง์์ ๊ณต์ ํ๊ณ ์ ๊ฐ์คํ์๊ณ , ๋ง์ ๋์์ด ๋์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
[๋ฌธ์]
Email : kukekyakya@gmail.com
Courses
Reviews
- Learning Large-Scale System Design by Building Directly with Spring Boot - Bulletin Board
- Spring Boot: Learn Large-Scale System Design by Building - Cache Strategies
- Spring Boot: Learn Large-Scale System Design by Building - Cache Strategies
- Learning Large-Scale System Design by Building Directly with Spring Boot - Bulletin Board
- Spring Boot: Learn Large-Scale System Design by Building - Cache Strategies
Posts
Q&A
์ปค์ ๊ธฐ๋ฐ ํ์ด์ง๋ค์ด์ ๊ณผ ๋ฌดํ ์คํฌ๋กค๋ง
KMC๋, ์๋ ํ์ธ์! ๋ฌดํ ์คํฌ๋กค๋ง์ ๋ ๋ฒ์งธ๋ถํฐ ๋ณดํต ๋์ชฝ id ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ด๋ณดํต ์ปค์ ๊ธฐ๋ฐ ํ์ด์ง๋ค์ด์ ๊ณผ ํฐ ์ฐจ์ด๊ฐ ์๋ ๊ฑด๊ฐ์? (claude ๋ ) ๋ธ๋ก๊ทธ ๋ณด๋ฉด์ ์ด๊ฒ๋ ๋น์ทํ ๊ฐ๋ ์ธ ๊ฑฐ ๊ฐ์์ ์ง๋ฌธ ๋๋ฆฝ๋๋ค.๋ฌดํ ์คํฌ๋กค ์ฌ์ฉ์ฑ์์ ํน์ ๊ธฐ์ค์ (๊ฐ์์์๋ ๋ง์ง๋ง ID)์ผ๋ก ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ์ปค์ ๊ธฐ๋ฐ ํ์ด์ง๋ค์ด์ ์ ๋๋ค! ๋์ผํ ์๋ฏธ์ ๋๋ค.๋ฌดํ ์คํฌ๋กค์ ์ค์ ์ฌ์ฉ์ ์ ์ฅ์์์ ์ฉ์ด์ด๊ณ , ๋ด๋ถ์ ์ธ ๊ตฌํ ๊ด์ ์์๋ ์ปค์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํฉ๋๋ค.๋ฌผ๋ก , ๋ฌดํ ์คํฌ๋กค์ด ํญ์ ์ปค์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํด์ผํ๋ค๋ ๊ฒ์ ์๋๊ณ , offset/limit ๋ฐฉ์์ผ๋ก๋ ๋ฌดํ ์คํฌ๋กค๋ง์ ๊ตฌํํ ์๋ ์์ต๋๋ค. ๋ค๋ง, ๋ฌดํ ์คํฌ๋กค๋ง์ด๋ผ ํ๋ฉด ์ปค์ ๊ธฐ๋ฐ ๊ตฌํ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๊ธด ํ๋ค์. ์ด๋ ๊ฒ ์ํฐํฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ๋์ง ๊ถ๊ธํฉ๋๋ค. ๊ฐ์์์ ์ฒ๋ผ SnowFlake๋ ๋ณดํต ์ ๋ ๊ฒ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด์ ํ์ฉํ๋์ง๋ ๊ถ๊ธํฉ๋๋ค.Snowflake๋ ๊ทธ์ ์ค๋ฆ์ฐจ์ ์๋ฅผ ์ถฉ๋์์ด ๋น ๋ฅด๊ฒ ์์ฑํ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ์ด๊ณ , ์ด๋ฌํ ํน์ฑ์ผ๋ก ์ธํด primary key๋ก ์ฌ์ฉ๋ ๋ฟ ์ธ๋ฑ์ค์๋ ๋ฌด๊ดํฉ๋๋ค.์๋ฌดํผ ์ํฐํฐ์ ์ธ๋ฑ์ค, ์ฐ๊ด ๊ด๊ณ ๋ฑ์ ์ ๋ ธํ ์ด์ ์ ์ง๋ฌธ์ฃผ์ ๊ฒ์ผ๋ก ์ดํดํ๋๋ฐ์.๊ทธ๋ ๊ฒ ํด๋ ๋๊ณ , ์ํด๋ ๋ฉ๋๋ค. ๊ฐ์ ๋ ๋ถ๋ถ๋ ์๊ณ ์์ ๋กญ๊ฒ ํ๋ฉด ๋ฉ๋๋ค.ํ์ง๋ง ์กฐ๊ธ ๋ ์ค๋ฌด ๊ด์ ์์ ๋ณธ๋ค๋ฉด, ์ธ๋ฑ์ค๋ฅผ ์ฝ๋์ ์ ๋ ธํ ์ด์ ์ผ๋ก ์ ์ํ๋ ๊ฒฝ์ฐ๋ ์ ์์ต๋๋ค.๋ฌผ๋ก , ์์ฒ๋ผ ์ฌ์ฉํ๋ ์ฌ๋๋ ์๊ฒ ์ง๋ง, ํ๋ฒ ์ฌ์ฉ๋๊ณ ๋ง ์ฝ๋์ด๊ณ DDL์ ๋ณ๋ ์คํฌ๋ฆฝํธ ๋๋ ๋ฌธ์๋ก ๊ด๋ฆฌํ๊ฑฐ๋ db์ ์์ฑ๋๊ฑธ ์ง์ ๋ณด๋๊ฒ ์ผ๋ฐ์ ์ธ ๊ฒ ๊ฐ๋ค์.์ฐ๊ด ๊ด๊ณ ์ ๋ ธํ ์ด์ ๋ ๊ฐ์ฒด ๊ฐ์ ๊ฐ๊ฒฐํฉ๋๋ฉด ์ ์ง๋ณด์๋ ์ด๋ ต๊ณ , ์ ์ด์ ๋ถ์ฐ ํ๊ฒฝ์ด๋ผ๋ฉด ๊ฐ์ฒด ์ฐธ์กฐ ์์ฒด๊ฐ ์ด๋ ค์ธ ์ ์์ด์ ๊ตณ์ด ์ฌ์ฉํ์ง ์๋ค์.์ ์ ์ฃผ๋ณ์ ๊ฒฝ์ฐ๋ฅผ ๋ณด๋ฉด, ์ ์ด์ JPA ์์ฒด๋ฅผ ์์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋์ฑ ์ผ๋ฐ์ ์ด๋ผ๊ณ ์๊ฐ๋๋ค์.
- 0
- 2
- 20
Q&A
์น์ 3์ 22๋ฒ์งธ ๊ฐ์์์ ์๋ฌ๋ฐ์ํฉ๋๋ค..
MinKyu Song๋, ์๋ ํ์ธ์! ์ฝ๋๊ฐ ์๋ ๋ก์ปฌ ํ๊ฒฝ์ ๊ดํ ๋ถ๋ถ์, ์ ๊ฐ ์ ํํ ์์ธ์ ์ถ์ ํ ์ ์๋ค๋ณด๋ ์ง์ ํด๊ฒฐํด ๋๋ฆฌ๊ธฐ์ ์ด๋ ค์์ด ์๋ค์..! ์ด์ ์ RedisTestContainerSupport ์ฒ์ ๋ง๋ค๊ณ ํ ์คํฌ ์ํํ๋๊ฑด ์ ์์ ์ผ๋ก ๋์๊ฐ๊ณ ์๊ณ ,SplitShardedBloomFilterRedisHandlerTest.mightContain ํ ์คํธ๋ง ์คํจํ๊ณ ์๋ค๋ ๋ง์์ด์ค๊น์? ๋ก์ปฌ์ ๋์ปค๊ฐ ์ ์คํ๋๊ณ ์๋์ง ๋ค์ ํ๋ฒ ์ ๊ฒํด๋ณด์๊ณ ,๊ตฌ๊ธ์ Could not find a valid Docker environment ๊ฒ์ํด๋ณด๋ฉด ๋น์ทํ ์ฌ๋ก๋ค์ด ๋์ค๋๋ฐ ํ๋์ฉ ํ์ธํด๋ณด์๊ฒ ์ด์?
- 0
- 4
- 30
Q&A
๊ฒ์๊ธ ์์ฑ ๋ก์ง์์ ์ค๋ฅ ๋ฐ์์ redis ๊ฒ์๊ธ ์ ๋๋๋ฆฌ๊ธฐ
songso0412๋, ์๋ ํ์ธ์! ๊ฐ์์์๋ ๊ฒ์๊ธ ์์ฑ๊ณผ ๊ฒ์๊ธ ์์ ์ ํฉ์ฑ์ ์ํด ๋ชจ๋ rdb์ ์ ์ฅํ๊ณ ๋จ์ผํ ํธ๋์ญ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ์ ๋ต์ ์ทจํ๊ณ ์๋๋ฐ์,๊ทธ์ ๋ณ๊ฐ๋ก redis์ ๊ฒ์๊ธ ์๋ฅผ ์ ์ฅํ๋ ์ํฉ์ ๋ง์ํ์๋ ๊ฒ์ผ๊น์?rdb ํธ๋์ญ์ ์ด ์ปค๋ฐ๋ ํ์ redis ์ฆ๊ฐ๊ฐ ์คํจํ๊ฑฐ๋,redis ์ฆ๊ฐ๋ ํ์ rdb ํธ๋์ญ์ ์ด ๋กค๋ฐฑ๋๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒ ๋ค์. ์ ํฉ์ฑ์ ๋ฐ๋์ 100% ์๋ฒฝํ๊ฒ ์ง์ผ์ผํ๋์ง์ ๋ํด์๋ ๊ณ ๋ฏผํด๋ณผ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.์ด๋ฌํ ์ํฉ์ด๋ผ๋ฉด ํธ๋์ญ์ ์ด ๋กค๋ฐฑ๋ ๋์ ์์ธ๋ฅผ ์บ์นํด์, ์ ํ๋ฆฌ์ผ์ด์ ์์ redis ์นด์ดํธ๋ฅผ ๋ค์ ๊ฐ์์์ผ์ฃผ๋ฉด ๋ฉ๋๋ค.๋ฌผ๋ก ์ด๋ ๊ฒ ํ๋ฉด redis ๊ฐ์ ์ฝ๋๊ฐ ์คํจํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ ํฉ์ฑ์ ์๋ฒฝํ๊ฒ ๋ณด์ฅ๋์ง ์์ต๋๋ค.ํ์ง๋ง ์ค๋ฅ๋ก ์ธํด ์ ํฉ์ฑ์ด ๊นจ์ง๋ ์ํฉ์ด ํํ๊ฒ ๋ฐ์ํ๋ ๊ฒ๋ ์๋๊ณ , ์ด๋ค ๋ฐ์ดํฐ์ธ์ง์ ๋ฐ๋ผ์ ๊นจ์ง๋๊ฒ ๋ฌธ์ ๋์ง ์์ ์๋ ์์ต๋๋ค.ํ์ฒ๋ฆฌ ๋ณด์ ์ ๋ฃ๋ ์ ๋ต๋ ๊ฒธํ ์ ์๋ ๊ฒ์ด๊ณ ์. ๊ฐ์ง๊ฐ ๋์์ ๋, ๋ฌธ์๊ฐ ๋ค์ด์์ ๋, ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฒ์ฌ(์ํ๋ง ๋ฑ)ํ ๋ ๋ฑ ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ๋ค๋ฆ๊ฒ ๋ณด์ ์์ผ์ค๋ ์์คํ ์ด์์ ํฌ๊ฒ ๋ฌธ์ ๊ฐ ์์ ์ ์์ต๋๋ค.๋ฌดํผ ์ด๋ ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ณด์ ํธ๋์ญ์ ์ ์ํํด์ ํด๊ฒฐํ ์ ์์ต๋๋ค. (๋ณ๋์ ํธ๋์ญ์ ๋๋ ๋ก์ง์ผ๋ก ์ ํฉ์ฑ์ ๋ง์ถ๋ค๋ ์๋ฏธ์ ๋๋ค. ํ์ง๋ง ๋ณด์ ํธ๋์ญ์ ์ ๋ํ ์คํจ์ ๋ํ ๊ณ ๋ ค๋ ํ์ํ๋ค์.) ๊ทผ๋ฐ ์ ํฉ์ฑ์ด ์ฃผ์ํ๋ค๋ฉด, rdb ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ด๋ด๋๊ฒ ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ํ์คํ ํด๊ฒฐ์ฑ ์ผ ์ ์์ต๋๋ค.์ ํฉ์ฑ์ ์ํ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋, ๋ง์ง๋ง ์ฑํฐ์์ ์๊ฐํ๋ Transactional Outbox ์ ๋ต๊ณผ ์ปจ์๋จธ์ ๋ฉฑ๋ฑ ๋๋ ์ค๋ณต ๋ฐฉ์ง ์ ๋ต์ ์ทจํ ์๋ ์์ต๋๋ค.๊ฒ์๊ธ ์์ฑ ํธ๋์ญ์ ์ด ์๋ฒฝํ๊ฒ ์ข ๋ฃ๋์์ ๋์ ์ด๋ฒคํธ๋ฅผ ์ ์ค ์์ด ๋ณด๋ด๊ณ , ์ปจ์๋จธ์์๋ ๊ฒ์๊ธ ์๋ฅผ ์ฆ๊ฐ์์ผ์ค๋๋ค. ๋ฌผ๋ก ์ค๋ณต ์ด๋ฒคํธ์ ๋ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ์ ์๊ฐ ๋ฒํผํด๋๊ฑฐ๋ ์ฒ๋ฆฌํ ์ด๋ฒคํธ์ ๋ํด์๋ ๊ด๋ฆฌํ๋ ์ ๋ต์ ๊ฒธํด์ผ๊ฒ ๋ค์. ์ด๋ ํ ์ฌ์ ๋ก redis์ ๊ด๋ฆฌํ์๋ ค๋ ์๋์ธ์ง ์ ํํ ํ์ ํ๊ฑด ์๋์ง๋ง,์ ๋ผ๋ฉด ์ ํฉ์ฑ์ด ํ์ํ ๋ฐ์ดํฐ๋ฅผ rdb/redis์ ๋ถ๋ฆฌ ์ ์ฅํ๋ฉด์๊น์ง ์ธํ๋ผ์ ์ด์ ๋ณต์ก๋๋ฅผ ๋์ผ ๋ฐ์์ผ rdb ๋จ์ผ ํธ๋์ญ์ ์ ์ด์ฉํ ๊ฒ ๊ฐ์ต๋๋ค.์กฐํ ์ฑ๋ฅ์ ๋ํ ์ฐ๋ ค๊ฐ ์๋ค๋ฉด(๊ณต๊ฐ์ ๋ํ ์ฐ๋ ค๋ ์คํ๋ ค ์์ ๊ฒ์ด๊ณ ์), rdb์ ๋จผ์ ์ฐ๊ธฐ ์์ ์ ํ ๋ค์ redis์ ์ฝ๊ธฐ์ฉ์ผ๋ก ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์บ์ํด๋ ์๋ ์๋ ๊ฒ์ด๊ณ ์. ๋ฑํ ์ ๋ต์ ์๊ณ ์์คํ ์ด์ ๋ฐฉ์์ ๋ฐ๋ผ์ ํด๊ฒฐ์ฑ ๋ ๋ค์ํ ์ ์์ด์, ์ํฉ์ ์๋ง๊ฒ ์ ๋นํ ๋ฐฉ๋ฒ์ ์ฐพ์๋๊ฐ๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค์!
- 0
- 2
- 46
Q&A
http://localhost:8080/cache-strategy/{{cacheStrategy}}/items ํธ์ถ ์ NPE ์๋ฌ ๋ฌธ์
๋ฆฌ๋๋, ์๋ ํ์ธ์!์ด๋ฒ์๋ ์ ์๊ฐํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. CGLIB์ด ์๋ JDK Proxy(์ธํฐํ์ด์ค์ ํ๋ผ๋ฏธํฐ ์ ๋ณด๋ฅผ ๋ณด์กดํ์ง ๋ชปํจ)๊ฐ ๋์ํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๊ณ , ๋ก์ปฌ IDE ์ปดํ์ผ ํ๊ฒฝ์์ ์ฐจ์ด๊ฐ ์๋๊ฑด์ง ์ถ๊ตฐ์..! KukeCacheKeyGenerator.genKey ๋ฉ์๋์์ ์๋ ์ถ๋ ฅ ๊ฒฐ๊ณผ ๊ณต์ ํด์ฃผ์ค ์ ์์๊น์?System.out.println(joinPoint.getThis().getClass()); ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก๋,์ธํ ๋ฆฌ์ ์ด Settings > Build, Execution, Deployment > Compiler > Java Compiler ๋ฉ๋ด์์,Javac Options > Additional command line parameters์๋ค๊ฐ +parameters๋ฅผ ์ถ๊ฐํด๋ณด์๊ฒ ์ด์?class ํ์ผ์ ํ๋ผ๋ฏธํฐ๋ช ์ ๋ณด์กดํ๋ ์ค์ ์ ๋๋ค. ์ ๋ฐฉ๋ฒ์ด ์๋๋ฉด, build.gradle์ ์๋ ์ค์ ์ ์ถ๊ฐํด๋ณด์๊ฑฐ๋,tasks.withType(JavaCompile) { options.compilerArgs += ["-parameters"] } KukeCacheApplication์ @EnableAspectJAutoProxy(proxyTargetClass = true)๋ฅผ ์ถ๊ฐํด๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค! ํน์ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ ๋ชจ๋ ์๋๋ค๋ฉด ๋ค์ ๋ง์ ๋ถํ๋๋ฆฝ๋๋ค!
- 1
- 2
- 55
Q&A
๋ฉํฐ ๋ชจ๋์ด ์๋ MSA ํ๊ฒฝ์์ common
newsungk7๋, ์๋ ํ์ธ์! ๋ง์ ์ฃผ์ ๋ด์ฉ์ ์ ๋ต๋ ์๊ณ ๊ตฌํํ๊ธฐ ๋๋ฆ์ ๋๋ค.๊ฐ์ฅ ๋จผ์ ๊ณ ๋ คํด๋ณผ๋งํ ๋ถ๋ถ์, ๊ตณ์ด ์ธ์ด ๋ ๋ฒจ์์๊น์ง ๋ถ๋ฆฌํ ํ์์ฑ์ด ์์์ง ๊ณ ๋ฏผํด๋ณผ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.์ฌ๋ฌ ํ๋ก์ ํธ ๊ฐ์ ๋ฐ๋์ ๊ณตํต ์ฝ๋๋ก ๋น๋ํด์ผ ํ๋ค๋ฉด, ๊ทธ๋ฅ ๋จ์ผ ํ๋ก์ ํธ์์ ๋ชจ๋๋ก ์ฝ๋๋ฅผ ๊ณต์ ํ๋๊ฒ ์์ฐ์ฑ์ด ํจ์ฌ ์ฌ๋ผ๊ฐ๊ณ ๊ด๋ฆฌ๋ ํธํ๋ฏ๋ก, ๊ตณ์ด ๋ถ๋ฆฌํ ์ด์ ๋ ์๊ณ ๋ถ๋ฆฌํ์ง ์๋๊ฒ ์ ๋ฆฌํ ์ธก๋ฉด์ด ๋ง์ต๋๋ค. ํน์ ๊ธฐ๋ฅ์ ์ํ ํนํ๋ ์ธ์ด ๋๋ ํ๋ ์์ํฌ๋ก ๋ถ๋ฆฌํด์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด, ์์ ๋ณ๋์ ํ๋ซํผ์ ๋ง๋ค์ด์ API/์ด๋ฒคํธ ๋ฑ์ ๋ณ๋ ํ๋กํ ์ฝ์ ์ด์ด์ค ์๋ ์์ต๋๋ค. ํต์ฌ ๋น์ฆ๋์ค ๋๋ฉ์ธ์ ์ด๋ฌํ ํ๋ซํผ์ ํ์ฉํด์ ํ์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉด ๋๋ ๊ฒ์ด๊ณ ์. ์ด์ฒ๋ผ ํ๋ฉด API์ ๊ฐ์ ์ธํฐํ์ด์ค ๋ ๋ฒจ์์ ๋ด๋ถ ์ธ์ด/ํ๋ ์์ํฌ ๋ฑ์ ์ถ์ํ๋๋ฏ๋ก ๋ฌธ์ ๋ ๋ถ๋ถ์ ์์ต๋๋ค. ๊ฐ ์ธ์ด๋ง๋ค ๊ณตํต ๊ธฐ๋ฅ์ผ๋ก ํธํ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ ์ ๊ณตํ ์๋ ์์ ๊ฒ ๊ฐ์ต๋๋ค.๊ด๋ จํด์ ๋ฐฐํฌ๋ ๊ฒ๋ค๋ ์ด๋ฏธ ๋ง์ด ๋ณด์ จ์ ๊ฒ ๊ฐ๊ณ ์.๋ถ๊ฐํ ๋ถ๋ถ์ ์๋์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ๋น์ฉ๋ ํ์ํ๊ณ , ์ฌ์ฉ์ฒ๊ฐ ๋ง๋ค๋ฉด ๋ฒ์ ๋ฐ ํธํ์ฑ ๋ฑ ๊ด๋ฆฌ๊ฐ ๊ฝค๋ ๋ณต์กํ๊ณ ๊ท์ฐฎ์ ๋ถ๋ถ์ ๋๋ค. ๋, ์ค๋ณต ์ฝ๋๋ฅผ ํญ์ ๊ณตํตํํ ํ์๋ ์๊ธฐ๋ ํฉ๋๋ค. ๋ฑํ ์ค๋ณต์ด ์ฐ๋ ค๋์ง ์๊ณ ์ง์์ ์ผ๋ก ๊ด๋ฆฌ๋์ด์ผ ํ๋ ์ฝ๋๊ฐ ์๋๋ผ๋ฉด, ์ฝ๋ ์ค๋ณต์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ๋ ๋ฌธ์ ๋์ง ์๋ ์ํฉ์ด ๋ง์ต๋๋ค. ๋ง์ฝ ์ฌ๋ฌ ์ธ์ด/ํ๋ ์์ํฌ๊ฐ ๋ชจ๋ ๋ค๋ฅผ ์ ์๋ ํ๋ก์ ํธ์์ ๊ณตํต์ผ๋ก ๋์ ์ํค๋ ค๋ ์ฝ๋๋ฅผ ๋์ผํ๊ฒ ๋ง๋ค๊ณ ์ถ๋๋ผ๋, ์ธ์ด๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฐ ํ๋ก์ ํธ๋ง๋ค ๋ค๋ฅด๊ฒ ๊ตฌํ๋ ์๋ ์์ต๋๋ค.๋์ผํ ๊ธฐ๋ฅ์ผ๋ก ๋ง๋ค์ด๋ด๋๋ผ๋, ์ ์ด์ ์ด๋ฏธ ๋ค๋ฅธ ์ฝ๋์ ๋๋ค.๋ด๋ถ ๋์์ด ๋ณต์กํ ์๋ก ๊ธฐ๋ฅ์ ๋ํ ๋ช ์ธ๋ฅผ ์ผ๊ด๋๊ฒ ์ ์งํ๋ ๊ฒ๋ ์ด๋ ค์์ง ์ ์์ต๋๋ค. ์๋ฌดํผ ํ ์๊ตฌ์ฌํญ์ธ ๋จ์ผํ ๊ฒ์ํ ์๋น์ค๋ฅผ ์ด๋ฃจ๋ ์์คํ ์ด๋ผ๋ฉด, ๊ฒ์ํ์ด๋ผ๋ ์์ ๋๋ฉ์ธ ๋ด์์ ๋ถ๋ฅ๋๋ ๊ฒ์๊ธ/๋๊ธ ํ์ ๋๋ฉ์ธ ๋จ์๊น์ง ๋ณ๋ ํ๋ก์ ํธ๋ก ๋ถ๋ฆฌ๋ฅผ ํด์ผ ํ๋ ๊ฒ์ธ์ง ํ์์ฑ๋ถํฐ ๋ค์ ๊ฒํ ๋ฅผ ํด๋ณด๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค.์ ์ด๋ ํ ๋จ์์ ๋ถ๋ฆฌ ๋๋ ํ๋ซํผํ์ ํ์์ฑ ๋ฑ์ด ์์ ๋์ ํ๋ก์ ํธ ๋ถ๋ฆฌ๋ฅผ ๊ณ ๋ฏผํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค์!
- 0
- 2
- 50
Q&A
2Depth ๊ฐ์ ๋์ค ๊ถ๊ธํ ์ ์์ด์!!
๋ฐ๋ ฅ๋, ์๋ ํ์ธ์!์ ์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. A๊ฐ ๋ ผ๋ฆฌ ์ญ์ ๋์ด์๋๋ผ๋, B๋ฅผ ์ญ์ ํ๋ค๊ณ ํด์ A๊ฐ ๋ฌผ๋ฆฌ ์ญ์ ๋์ง ์์ต๋๋ค.์์ง C๊ฐ ๋จ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.์ง๊ธ ์ฝ๋์์ ๋์์ด ๊ทธ๋ ๊ฒ ์ฒ๋ฆฌ๋๊ณ ์๋ค๋ ๋ง์์ด์ค๊น์?!
- 0
- 2
- 36
Q&A
์ค๋ฉ์ ๋ํด์ ๊ถ๊ธ์ ์์ต๋๋ค.
hahahl๋, ์๋ ํ์ธ์! ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฉ์ด๋ผ ํจ์ ์ํ ๋ถํ ์ ๋ํ ์ฉ์ด๋ก ์ฌ์ฉ๋์ง๋ง, ๊ฐ๋ ์ ์ผ๋ก ์์ง ๋ถํ ์ด๋๊ฒ ์๋๊ฑด ์๋๋๋ค. (๊ณต์์ ์ธ ์ฉ์ด์ ๋ํด์ ๋ฌป๋ ๊ฒ์ด๋ผ๋ฉด, it ๋ถ์ผ๊ฐ ์ฉ์ด์ ๊ทธ์ ๋ํ ํด์์ด ๋ค์ํ ์ ์๊ณ ๋น๊ณต์์ ์ธ ์ฉ์ด๋ ํํ ์ฌ์ฉ๋๋ค๋ณด๋, ๊ทธ ๋ถ๋ถ์ ๋ํด์ ์ ๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.)์ํ(ํ ์ด๋ธ๋ก ์น๋ฉด ๋ ์ฝ๋ ๋จ์)์ผ๋ก ๋ถ์ฐํ๋๊ฒ ์๋, ์์ง(ํ ์ด๋ธ๋ก ์น๋ฉด ์ปฌ๋ผ ๋จ์)์ผ๋ก ๋ถ์ฐํ๋ฉด ๊ทธ๊ฒ์ด ์์ง ๋ถํ ์ธ ๊ฒ์ด๊ณ ์.์ฌ์ค 1:1 ํ ์ด๋ธ ๊ด๊ณ๋ก ์ ๊ทํํ๋ค๋ผ๋ ๊ฐ๋ ๊ณผ ๋ฑํ ๋ค๋ฅผ ๊ฒ ์๋ค๊ณ ์๊ฐ๋๊ธฐ๋ ํ๋ค์. (๋ฌผ๋ก ์๋ฐํ ๋ฐ์ง๋ฉด ๋ค๋ฅด์ง๋ง์)ํน๋ณํ ์ค๋ช ๋๋ฆด๋งํ๊ฒ ์๋ ๋ถ๋ถ๋ ์๋๊ณ ์ฉ์ด์ ๋ํด์ ๊น๊ฒ ์ง๊ณ ๋์ด๊ฐ์ผํ ๋ถ๋ถ์ ์๋๋ผ, ํฌ๊ฒ ์ ๊ฒฝ ์์ฐ์๊ณ ๋์ด๊ฐ์ ๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ๋ค์!
- 0
- 2
- 68
Q&A
๊ฒ์๊ธ ํ ์คํธ ๋ฐ์ดํฐ ์ฝ์ - @PersistenceContext ์ ๊ดํ์ฌ
jack8226๋, ์๋ ํ์ธ์! TransactionTemplate์ ์ฌ์ฉํ์ฌ ํธ๋์ญ์ ์ ๋ฐ๋ก ์ด๊ณ EntityManager๋ฅผ ํ์ฉํ๋ ๋ถ๋ถ์,๋จ์ํ ๊ฑด๊ฑด์ด ์ฟผ๋ฆฌ๋ณด๋จ ๋ฒํฌ๊ฐ ๋น ๋ฅด๋ฏ๋ก ํ ์คํธ ๋ฐ์ดํฐ ์ฝ์ ์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์์ ์ด์๊ณ ,๊ทธ๋ฅ JPA์์ bulk ์ฐ์ฐ์ ํ๋ ค๋ฉด ํธ๋์ญ์ ์ข ๋ฃ ์์ ์ ํ๋ฒ์ flush ๋๋๊น ๊ทธ๋ ๊ฒ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋๋ผ๊ณ ์.์ด๋ฅผ ์ํด TransactionTemplate์ผ๋ก ํธ๋์ญ์ ์ ์ง์ ์ฐ ๊ฒ์ด๊ณ (๊ฐ์ ํด๋์ค์์ aop๋ ๋์ ์ํ๋ฏ๋ก), ๋ฒํฌ ์ฉ๋๋ก EntityManager๋ฅผ ์ด ๊ฒ์ ๋๋ค. PersistenceContext ๋ก em ์ ๊ฐ์ ธ์จ ์ด์ ๊ฐ ์๋์? ์๋๋ฉด ์ ํธํ์๋ ๋ฐฉ์์ด๋ผ ์ฑํํ ๋ฐฉ๋ฒ์ธ๊ฐ์? ๊ทธ๋ฆฌ๊ณ ์ง๋ฌธ ์ฃผ์ ์ฌํญ์ ๋ํด์๋ ๋ฑํ ์๋ฏธ๋ฅผ ๋๊ณ ์ฐจ์ด๋ฅผ ๋ง๋ ๋ถ๋ถ์ ์๋๋ผ, ํฌ๊ฒ ์ ๊ฒฝ์ฐ์ค ํ์๋ ์์ ๊ฒ ๊ฐ์ต๋๋ค..!์ด๋ ํ ๋ฐฉํฅ์ ์ ํธํ๋ ๊ฒ๋ ์๋๊ณ , ๊ทธ๋ฌํ ์ธ๋ถ์ ์ธ ์ฐจ์ด๋ฅผ ์ ์ ๋๋ก JPA๋ฅผ ๊ณต๋ถํ์ง ์์๊ณ ๊ณต๋ถํ ์๊ฐ๋ ๋ฑํ ์์ต๋๋ค. (๊ฐ์ธ์ ์ผ๋ก ์ ํธํ๋ ๋ฐฉํฅ์ JPA ์์ฒด๋ฅผ ์์ ์์ฐ๋ ๊ฒ์ด๊ณ , ์ค์ ๋ก๋ ์์ฐ๊ณ ์์ต๋๋ค.)์ ๋ ์ง๋ฌธ ์ฃผ์ ๊ฒ ๋ณด๊ณ ๋ฌด์จ ์ฐจ์ด๊ฐ ์์๋ ๊ถ๊ธํด์ ์งํผํฐํํ ๋ฌผ์ด๋ดค์ง๋ง,์ด ๋ต๋ณ์ ๊ทธ๋๋ก ์ ๋ฌ๋๋ฆฐ๋ค๊ณ ํด์ ๋ฑํ ์๋ฏธ๊ฐ ์์ ๊ฒ ๊ฐ์ง๋ ์๊ณ , ์์ฑํ ์คํฌ๋ฆฝํธ์์๋ ๋ฑํ ๋์ ์ ์ฐจ์ด๊ฐ ์์ง๋ ์๋ค์.๊ทธ๋ฅ JPA ํ์ตํ ๋ @PersistenceContext๋ฅผ ์ผ๋ ๊ธฐ์ต๊ณผ JPA ๊ด๋ จ ์ ๋ ธํ ์ด์ ์ด๋ผ ์ด ๊ฒ์ด๊ณ , ๋จ์ ๋ฐ์ดํฐ ์ด๊ธฐํ ์คํฌ๋ฆฝํธ ์ฉ๋๋ผ ๋ณ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๋๊ฑฐ๋ ๋์ ์์ ์ฐจ์ด๋ฅผ ์ดํดํ๊ณ ์๋ ๋ถ๋ถ์ ์๋๋๋ค.๋ ๊ฐ์ธ์ ์ผ๋ก ์ถ๊ตฌํ๋ ๋ฐฉํฅ์, ๊ตณ์ด ๋ชฐ๋ผ๋ ๋๋ค๊ณ ํ๋จํ ๋ถ๋ถ์ ์ถ์ํ๋ ์์ญ๊น์ง ๊ตณ์ด ์๋ ค๊ณ ํ์ง ์๊ธฐ๋ ํฉ๋๋ค. ์ฝ๋ ์๋๋ฅผ ํ์ ํ์๋ ๊ฒ ๋๋ฌด ์ข์ ์์ธ์ง๋ง, ํด๋น ๋ถ๋ถ์ ์ ๋ ๋ฑํ ์ ๊ฒฝ์ฐ๊ณ ๋ง๋ ๋ถ๋ถ์ ์๋๋ผ ๋ง์กฑ์ค๋ฌ์ด ๋ต๋ณ์ ์๋๋ฏํ์ฌ ์ฃ์ก์ค๋ฌ์ด ๋ง์์ด ์๋ค์.. ใ ใ ใ
- 0
- 1
- 47
Q&A
๋๊ธ ํ ์ด๋ธ ์ค๊ณ
jjs270402๋, ์๋ ํ์ธ์! ์ค๋ฌด์์ ์ธ๋ํค ์ ์ฝ ์กฐ๊ฑด์ ๊ฑธ์ง ์๋๊ฒ ์ผ๋ฐ์ ์ ๋๋ค.๋ฌผ๋ฆฌ์ ์ธ ์ ์ฝ ์กฐ๊ฑด์ ๊ฑธ๋ฉด ์คํค๋ง ๋ณ๊ฒฝ์๋ ์ด๋ ค์์ด ์๊ธฐ๊ณ , ๋ฐ์ดํฐ CUD ์์๋ ์ ์ฝ ์กฐ๊ฑด์ ๊ฒ์ฆํด์ผ ํ๋ฏ๋ก DB ๋ถํ๋ ๋์ฑ ์ปค์ง๋๋ค.DB์ ๋ฆฌ์์ค๋ ๊ฐ์ฅ ์์คํ๊ฒ ๋ค๋ค์ผํ ๋ถ๋ถ์ด๊ณ ์. (๊ฒฐ๊ตญ ๋ชจ๋ ๋ณ๋ชฉ/์ฅ์ ์ง์ ์ด DB๊ฐ ๋ ์ ์์ผ๋ฏ๋ก)๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฌผ๋ฆฌ์ ์ธ ์ ์ฝ ์กฐ๊ฑด์ ๊ฑธ์ง ์์ต๋๋ค.๋๊ธ ํ ์ด๋ธ์ ๋ ผ์ธ๋ก ๋ณด๊ณ ์ ์ด์ ํ ์ด๋ธ ์์ฒด๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋์ด ์๋ ๋ถ์ฐ DB๋ผ๋ฉด, ๋ฌผ๋ฆฌ์ ์ ์ฝ ์กฐ๊ฑด์ ์์ ์ค์ ํ์ง ๋ชปํ ์๋ ์์ต๋๋ค.๊ทธ๋ ๋ค๊ณ ์ธ๋ํค๊ฐ ์์ ์๋ค๋ ์๋ฏธ๋ ์๋๋๋ค.๋ ผ๋ฆฌ์ ์ธ ์ค๊ณ์์๋ ์ธ๋ํค๋ฅผ ์ค์ ํ ๊ฒ์ด ๋ง๊ณ , ๋ฌผ๋ฆฌ์ ์ธ ์ ์ฝ์ ์ค์ ํ์ง ์๋๋ค๋ ์๋ฏธ์ ๋๋ค.๊ทธ๋ฆฌ๊ณ ๋ ผ๋ฆฌ์ ์ธ ๊ด๊ณ์ ๋ํด์๋ DB ์ ์ฝ ์กฐ๊ฑด์ผ๋ก ๊ฒ์ฆํ๋๊ฒ ์๋๋ผ, ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ง์ ์ ์ฝ ์กฐ๊ฑด์ ๊ฒ์ฆํ ์ ์๋ ๊ฒ์ด๊ณ ์.๊ฐ์์์๋ ์ด๋ฌํ ๋ฐฉ์์ ์ทจํ๊ณ ์์ต๋๋ค!
- 0
- 2
- 39
Q&A
lockType ์ค๋ฅ ๋ฐ ์นด์ดํธ ์ฒดํฌ ์ ๋จ
์๋ ํ์ธ์! ์ ๋ด์ฉ๋ง ๋ณด๊ณ ๋ ์์ธ ํ์ ์ด ์ด๋ ต๋ค์, ํน์ ์คํ๋ง๋ถํธ ๋ฒ์ ์ด ๊ฐ์์ ๋ค๋ฅผ๊น์?์ต์ ๋ฒ์ ์์๋ restClient์์ retrieve()๊น์ง๋ง ํ๋ฉด ์ค์ api ํธ์ถ์ด ์๋ ์ ์์ด์, retrieve().toBodilessEntity()๊น์ง ํธ์ถํด๋ณด์๊ฒ ์ด์?
- 0
- 2
- 42





