์ค๋์ ํ ํ๋ก์ ํธ์ ๋ํ ERD (์ฐ๊ด๊ด๊ณ) ์์ฑ๊ณผ API ๋ช ์ธ์, ์๊ตฌ์ฌํญ ๋ถ์์๋ฅผ ์์ฑํ์๋ค. ์งํํ๋ฉด์ ๋ฐฐ์ด์ ์ ์ ๋ฆฌํ๊ณ ์ ํฉ๋๋ค.
๋จผ์ ERD๋ฅผ ์์ฑํ๋ฉด์ ํ ์ด๋ธ๊ฐ์ ์ฐ๊ด๊ด๊ณ๋ฅผ ์ค์ ํ ๋ ๋ ํ ์ด๋ธ์ ๊ด๊ณ๊ฐ ์๋ณ ํน์ ๋น์๋ณ ์ธ์ง ์ ์๊ฐ ํ์ํ๋ค.
๋๋ ์๋ณ, ๋น์๋ณ์ด๋ ํค์๋๋ฅผ ์ฒ์ ๋ค์ด๋ด์ ์ ๋ฆฌ๋ฅผ ํ๋ฉฐ ๋ฆฌ๋ง์ธ๋ ํ๋ ค๊ณ ํ๋ค.
๊ทธ๋์ ์๋ณ ๋น์๋ณ์ด ๋ญ๊น ?
์ ์ ํ
์ด๋ธ๊ณผ ๊ฒ์ํ ํ
์ด๋ธ์ ๊ด๊ณ๊ฐ 1 : N (์ผ ๋ ๋ค) ๋ผ๊ณ ์๊ฐํด๋ณด์, ์ด์ ๋ ํ๋ช
์ ์ ์ ๊ฐ ์ฌ๋ฌ๋ฒ ๊ฒ์ํ์ ๊ธ์ ์์ฑํ ์ ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
์ด๋ ๋ ํ ์ด๋ธ์ ๊ด๊ณ๋ฅผ ์๋ณ ๊ด๊ณ ํน์ ๋น์๋ณ ๊ด๊ณ๋ก ์ ์ ํ ์ ์์ต๋๋ค.
โก ์๋ฅผ ๋ค๋ฉด ์ ์ ๊ฐ ์์ผ๋ฉด ๊ฒ์๊ธ์ด ์กด์ฌ ํ ์ ์๋ค.
โก ์๋ฅผ ๋ค๋ฉด ์ถ๊ตฌ์ ์์ ์ถ๊ตฌํ ์ผ ๊ฒ ๊ฐ์ต๋๋ค.
(๊ผญ ์ถ๊ตฌํ๋ฅผ ์ ์ง ์์๋ ๋๋ ๋๋ ์ธ๊ฒ ๊ฐ๋ค.)
์๋ณ๊ด๊ณ๋ ๊ตฌ์กฐ๋ณ๊ฒฝ์ ์ด๋ ค์์ด ์์ง๋ง, ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค, ๋น์๋ณ ๊ด๊ณ๋ ๊ตฌ์กฐ๋ณ๊ฒฝ์ด ์ฉ์ดํ์ง๋ง, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ์ง ์์ต๋๋ค. ์ด๋ฌํ ์ฅ๋จ์ ์ ํตํด ํ์์ ๋ฐ๋ผ ๊ด๊ณ๋ฅผ ์ค์ ํด์ผ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@Builder ์ด๋
ธํ
์ด์
์ ๋ฌธ์ ์ ์ธ ์์๋ฐ์ ํ๋๋ฅผ ๋น๋๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ ์ ์ ์ฌํญ์ ๋ณด์ํ๊ธฐ ์ํด ๋์จ ๊ฐ๋
์ด๋ผ๊ณ ํฉ๋๋ค. @SuperBuilder ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์์๋ฐ์ ํ๋๋ ๋น๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด ์์ Entity (Product) ์ ๋ถ๋ชจ Entity (BaseEntity) ์์ชฝ์
@SuperBuilder์ด๋ ธํ ์ด์ ์ ๊ฐ๊ฐ ์ถ๊ฐํด์ค์ผ ํฉ๋๋ค.- ๊ทธ ํ ํ์์ ์ฌ์ฉํ๋
@Builder์ด๋ ธํ ์ด์ ๊ณผ ๋์ผํ๊ฒ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
Git ์ ๊ธฐ๋ฅ ์ด์๋ค.์ฌ์ง๊ณผ ๊ฐ์ด ๋ค๋ฅธ ๋ธ๋์น์ ์๋ ์ปค๋ฐ์ ์ ํํ์ฌ ๋์ ๋ธ๋์น์ ์ ์ฉ์ํฌ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด (๊ธฐ๋ฅ) ์ ๋๋ค.
- ๋ค๋ฅธ ๋ธ๋์น์ ์ปค๋ฐ ๋ด์ญ์ด ๋์ ๋ธ๋์น๋ก ์จ์ ํ ๋์ด์ค๊ฒ ๋ฉ๋๋ค.
- 1 : ๋ธ๋์น๋ฅผ ์ ํํฉ๋๋ค.
2: ์ฒด๋ฆฌํฝ ํ ์ปค๋ฐ์ ๊ธฐ์ค์ผ๋ก ์ฒด๋ฆฌํฝ์ ์งํํฉ๋๋ค.