์ „์ฒด ๊ธ€

์ตœ์ข… ํ”„๋กœ์ ํŠธ์— ๋“ค์–ด๊ฐ”๋‹ค. ๊ธฐ์กด ํŒ€๋“ค๊ณผ ๋‹ฌ๋ฆฌ S.A ๋ถ€ํ„ฐ ์—„์ฒญ ์„ธ์„ธํ•˜๊ฒŒ ์งฐ๋Š”๋ฐ, ์–ด๋ ต๋‹ค... ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ  → ์•„ํ‚คํ…์ณ ๊ทธ๋ฆฌ๊ณ  → ์™€์ด์–ด ํ”„๋ ˆ์ž„ → ERD → API ๋ช…์„ธ์„œ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ ์‚ฌ์‹ค API ๋ช…์„ธ์„œ ์ž‘์„ฑ์— ์–ด๋ ค์›€์ด ๋งŽ์•„์„œ ์ค‘๊ฐ„ ์ค‘๊ฐ„์— ๊ทธ๋งŒ๋‘๊ณ  ์™€์ด์–ด ํ”„๋ ˆ์ž„์„ ๊ทธ๋ฆฌ๊ณ , ERD๋ฅผ ์„ค๊ณ„ํ•œ ํ›„์— ์ง„ํ–‰ํ–ˆ๋‹ค. ERD๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ, ๊ฐ€์žฅ ์–ด๋ ค์› ๋‹ค. ๊ณต์—ฐ์žฅ๊ณผ ์ขŒ์„์„ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ตฌ์„ฑํ–ˆ๋Š”๋ฐ, ์ฒ˜์Œ์—๋Š” ์ขŒ์„ ์•ˆ์— ์ด ์ขŒ์„์ด ๊ฒฝ๋งค์„์ธ์ง€ ์„ ์ฐฉ์„์ธ์ง€๋ฅผ ํ‘œ๊ธฐํ•˜๋Š” ์ปฌ๋Ÿผ๊ณผ ๊ฐ€๊ฒฉ ์ปฌ๋Ÿผ์ด ๋“ค์–ด์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ƒ๊ฐ์„ ๊ณฐ๊ณฐํžˆ ํ•ด๋ณด๋‹ˆ(๋‹ค๋ฅธ ํŒ€์›๋ถ„์ด ใ…Ž) ์ขŒ์„์˜ ๊ฐ€๊ฒฉ, ํŒ๋งค ํƒ€์ž…์€ ๊ณต์—ฐ์žฅ์ด ์•„๋‹ˆ๋ผ ๊ณต์—ฐ์— ๋”ฐ๋ผ ๋ณ€๋™๋˜๋Š” ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณต์—ฐ๊ณผ ์ขŒ์„์˜ ๋ณตํ•ฉํ‚ค๋กœ ๊ตฌ์„ฑ๋œ ๊ณต์—ฐ ๋ณ„ ์ขŒ์„ ๊ฐ€๊ฒฉ ํ…Œ์ด๋ธ”์„ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ€๊ฒฉ๊ณผ ํŒ..
๋ฐœํ‘œ ํ”ผ๋“œ๋ฐฑ์—์„œ GitHub Action Redis TTL ์•„ํ‚คํ…์ณ ์— ๋Œ€ํ•ด ๋“ค์—ˆ๋‹ค. ๊ณต๋ถ€ํ•˜์ž ใ…Ž ๋‚ด์ผ....
CardService ํด๋ž˜์Šค์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์งœ๋Š”๋ฐ, ์›Œ๋‚™ ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๊ฐ€ ๋งŽ์•„ Mockito๋ฅผ ํ™œ์šฉํ•˜๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ค์›Ÿ๋‹ค... given-willReturn ์ด ๋„ˆ๋ฌด ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ , ์ƒ์œ„ ์—”ํ‹ฐํ‹ฐ์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, ์ฐจ๋ผ๋ฆฌ H2๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹ค์ œ ๊ฐ’์„ ๋„ฃ๋„๋ก ์ง„ํ–‰ํ–ˆ๋‹ค. ๊ฐ’๋“ค์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ Never ์—†์—ˆ๋‹ค. ํ•˜์ง€๋งŒ!! โš ๏ธ ํ•œ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚  ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ๊ฐ’๋“ค์„ ๋ชจ๋‘ ์ง€์›Œ์ค˜์•ผ ํ–ˆ๋Š”๋ฐ ๋‹ค๋ฅธ ์—”ํ‹ฐํ‹ฐ์˜ repository๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, service ๋‹จ์„ ๊ฑฐ์ณ์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— deleteAll ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์‹œ mockito ๋ฅผ ์ ์šฉํ•ด๋ณด๋ คํ•˜๋‹ค ์žฅ๋ ฌํžˆ ์‹คํŒจ....... ๋‹ค์‹œ ๊ธฐ์กด์œผ๋กœ ๋Œ์•„์™€์„œ ์—ฌ๋Ÿฌ ์„œ์น˜๋ฅผ ํ•ด๋ณธ ๊ฒฐ๊ณผ Databas..
GIT ๊ปŒ์ด๋„ค ์ด์ „ ๋ถ€ํ„ฐ ๋‚˜๋ฅผ ๋ˆ์งˆ๊ธฐ๊ฒŒ ๊ดด๋กญํžˆ๋˜ git ํŠนํžˆ ์ˆ˜์ • ์ค‘ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์ฝ”๋“œ๋ฅผ pull ํ•˜๋ฉด ์ƒ๊ธฐ๋Š” ์ด ๊ธ€... ์ด๋ฒˆ์—๋„ ์—ญ์‹œ๋‚˜,,,, ๊ฐœ๋ฐœ ์–‘์ด ๋งŽ๋‹ค๋ณด๋‹ˆ ๋”์šฑ ๋งŽ์ด ๋น ๋ฅด๊ฒŒ ๋ฐœ์ƒํ–ˆ๋‹ค.. ์ฒ˜์Œ์—๋Š” ๊ทธ๋ƒฅ ์•„์— ํฌ๊ธฐํ•˜๊ณ  ์ƒˆ๋กœ clone ํ–ˆ๋‹ค. ์ดํ›„์— ๋˜ ๋ฐœ์ƒํ•ด์„œ ํ•œ ๋ฒˆ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์‹œ๋„ ๋กœ์ปฌ develop ๋ธŒ๋žœ์น˜์—์„œ ๋จธ์ง€๋œ ์ฝ”๋“œ๋ฅผ pull ์ž‘์—… ์ค‘์ด ๋ธŒ๋žœ์น˜์—์„œ stash ํ•˜์—ฌ ์ž‘์—…ํ•˜๋˜ ๋‚ด์šฉ ์ €์žฅ git merge develop์œผ๋กœ merge! git stash apply ๋กœ ์ €์žฅํ•ด๋†“์€ ์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ ์™„๋ฃŒ ์‚ฌ์‹ค ์ด๊ฒŒ ์™œ ๋˜๋Š”์ง€๋Š” ์ž˜๋ชจ๋ฅด๊ฒ ๋‹ค. ํ•˜์ง€๋งŒ ๋˜๋Š” ๊ฒƒ์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•ด๋ณด์ž!ใ…‹ ์›๋ฆฌ๋Š” ์ถ”ํ›„ ์•Œ๊ฒƒ์ด๋‹ค......ใ…Ž
์˜ค๋Š˜ JPA ์‹ฌํ™” : Spring Data ๊ตฌ์กฐ ๋ฐ JpaRepository ์›๋ฆฌ Spring Data ๊ตฌ์กฐ ๊ธฐ๋Šฅ ๋ชฉ๋ก ๊ฐ•๋ ฅํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ • ๊ฐ์ฒด ๋งคํ•‘ ์ถ”์ƒํ™” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ์ด๋ฆ„์—์„œ ๋™์  ์ฟผ๋ฆฌ ํŒŒ์ƒ ๊ธฐ๋ณธ ์†์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ตฌํ˜„ ๋„๋ฉ”์ธ ๊ธฐ๋ณธ ํด๋ž˜์Šค ๋ช…๋ฃŒํ•œ ์ถ”์  ๊ธฐ๋Šฅ ์ง€ hyeyun.tistory.com ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ๋‹ค. ๋‚ด์ผ์€ ๊ผญ ํŽ˜์ด์ง€๋„ค์ด์…˜๊นŒ์ง€ ๊ณต๋ถ€ํ•˜์ž ์•„์ง ์œ ์ € ๋ฐ ์ด์ „ ๋‹จ๊ณ„๊ฐ€ ๋œ ๊ตฌํ˜„๋˜์–ด์„œ ํ”Œ์ ์„ ์ง„ํ–‰ํ•˜๊ธฐ์— ์–ด๋ ค์›€์ด ์žˆ์–ด ์•„์ง ์•ˆํ•˜๋Š”์ค‘ ใ…Ž ์ฃผ๋ง ๋ฐ˜๋‚ฉํ•˜๊ณ  ๋นก์„ธ๊ฒŒํ•ด์•ผ๊ฒ ๋‹ค ๐Ÿ™
Spring Data ๊ตฌ์กฐ ๊ธฐ๋Šฅ ๋ชฉ๋ก ๊ฐ•๋ ฅํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ • ๊ฐ์ฒด ๋งคํ•‘ ์ถ”์ƒํ™” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ์ด๋ฆ„์—์„œ ๋™์  ์ฟผ๋ฆฌ ํŒŒ์ƒ ๊ธฐ๋ณธ ์†์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ตฌํ˜„ ๋„๋ฉ”์ธ ๊ธฐ๋ณธ ํด๋ž˜์Šค ๋ช…๋ฃŒํ•œ ์ถ”์  ๊ธฐ๋Šฅ ์ง€์›(์ƒ์„ฑ ์ผ์‹œ, ๋งˆ์ง€๋ง‰ ๋ณ€๊ฒฝ ์ผ์‹œ, ์ƒ์„ฑ์ž, ๋งˆ์ง€๋ง‰ ๋ณ€๊ฒฝ์ž) ์‚ฌ์šฉ์ž ์ง€์ • ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ฝ”๋“œ ํ†ตํ•ฉ ๊ฐ€๋Šฅ์„ฑ JavaConfig ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ • XML ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ ๊ฐ„ํŽธํ•œ Spring ํ†ตํ•ฉ Spring MVC ์ปจํŠธ๋กค๋Ÿฌ์™€์˜ ๊ณ ๊ธ‰ ํ†ตํ•ฉ ๊ต์ฐจ ์Šคํ† ์–ด ์ง€์†์„ฑ์— ๋Œ€ํ•œ ์‹คํ—˜์  ์ง€์› ์›๋ฆฌ Repository ๋Š” MarkerInterface๋กœ ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ์€ ์—†๋‹ค. Repository ~ JpaRepository ๊นŒ์ง€๋Š” @NotRepositoryBean ์ด ๋ถ™์–ด์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. JpaRepository ๋ถ™์ด๋ฉด ์•Œ๋งž์€ ํ”„๋กœ..
Cascade(์˜์†์„ฑ ์ •์˜) ์‚ฌ์šฉ ์œ„์น˜ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ ๋ฐ˜๋Œ€ํŽธ - ๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ(๋‹ค๋Œ€์ผ ์—์„œ ์ผ) ์ฆ‰, @OneToMany๊ฐ€ ์žˆ๋Š” ์ชฝ ๋˜๋Š” @OneToOne๋„ ๊ฐ€๋Šฅ ์‚ฌ์šฉ ์กฐ๊ฑด ์–‘์ชฝ ์—”ํ‹ฐํ‹ฐ์˜ ๋ผ์ดํ”Œ ์‚ฌ์ดํด์ด ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋น„์Šทํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒŒ์‹œ๊ธ€์ด ์‚ญ์ œ๋˜๋ฉด ์ฒจ๋ถ€ํŒŒ์ผ๋„ ์‚ญ์ œ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋Œ€์ƒ ์—”ํ‹ฐํ‹ฐ๋กœ์˜ ์˜์†์„ฑ ์ „์ด๋Š” ํ˜„์žฌ ์—”ํ‹ฐํ‹ฐ์—์„œ๋งŒ ์ „์ด ๋˜์–ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฒจ๋ถ€ ํŒŒ์ผ์„ ๊ฒŒ์‹œ๊ธ€์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์˜์†์„ฑ ์ „์ด๋ฅผ ํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ์˜ต์…˜ ์ข…๋ฅ˜ ALL : ์ „์ฒด ์ƒํƒœ ์ „์ด PERSIST : ์ €์žฅ ์ƒํƒœ ์ „์ด REMOVE : ์‚ญ์ œ ์ƒํƒœ ์ „์ด MERGE : ์—…๋ฐ์ดํ„ฐ ์ƒํƒœ ์ „์ด REFRESH : ๊ฐฑ์‹  ์ƒํƒœ ์ „์ด DETACH : ๋น„์˜์†์„ฑ ์ƒํƒœ ์ „์ด orphanRemoval(๊ณ ์•„ ๊ฐ์ฒด ์ œ๊ฑฐ) ์‚ฌ์šฉ ์œ„์น˜ @OneToM..
์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์ตœ์ข… ์ „ ๋งˆ์ง€๋ง‰ ํŒ€ํ”Œ ํ˜ธใ…์ดํŒ…! ํŒ€์›๋“ค๊ณผ ๊ต‰์žฅํžˆ ์†๋ฐœ์ด ์ž˜๋งž๋Š”๋“ฏ ๋‹ค๋“ค ๋š๋”ฑ๋š๋”ฑ ์™„์„ฑ! Trello ๊ฐ™์€ ํ˜‘์—… ํˆด์„ ๊ตฌํ˜„ํ•˜๋Š” ํ”Œ์  ๊ต‰์žฅํžˆ ์ƒ์„ธํžˆ ๊ตฌ์ฒด์ ์œผ๋กœ ์ž˜ ๋‚˜๋ˆด๋‹ค API ๋ช…์„ธ์„œ ERD ์ด์ œ๋ถ€ํ„ฐ ๋š๋”ฑ ๋š๋”ฑ ๋งŒ๋“ค์–ด๋ณด์ž
KIMHYEYUN
๐Ÿ’