๊ฐ๋จํ์ง๋ง ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ณ ๋ฏผํ๊ณ ์ฝ์ง(?) ๋ด์ฉ์ ๋ํด ๊ณต์ ํด๋ณด๋ ค ํฉ๋๋ค. JPA๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ ๊ฐ์ฒด ๋ด๋ถ์ ๋ฐ๋์ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ํ์ํ๋ฐ์, ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ด๋ป๊ฒ ํ๋ฉด ํธ์ถํ์ง ๋ง๋ผ๊ณ ์ ๋ํ๋ผ ์ ์์๊น? ๋ฅผ ๊ณ ๋ฏผํ๋ ๋ด์ฉ์ ๋๋ค. **๊ฒฐ๋ก ์ ์ฃผ์ ๋ง๊ณ ๋ ์๋ค ์์ต๋๋ค.
1. @Embedded ์ ๋ด๊ฐ ํ๋ ์ค์
์ ๊ฐ ํ๋ ๊ณ ๋ฏผ๊ณผ ์ค์์ ๋ํด ๋ด์ฉ์ธ๋ฐ์, JPA์์ @Embedded, @Embeddable์ ์ฌ์ฉํ๊ฒ ๋๋ฉด protected ์ด์์ ๋น ์์ฑ์๋ฅผ ๋ฐ๋์ ์์ฑํด์ผ ํฉ๋๋ค. ์ด๋ ์ํฐํฐ์์ ๋น ์์ฑ์๋ฅผ ๋ฐ๋์ ๋ง๋ค์ด์ผ ํ๋ ๊ฒ๊ณผ ๋น์ทํ๋ฐ ๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ ์ฌ์ฉํ์ง๋ ์๋ ์์ฑ์๋ฅผ ํ๋ ๋ ๋ง๋ค๊ฒ ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ์ฌ์ฉํ์ง ์๊ธธ ์ํ๋ ์์ฑ์๋ฅผ ์๋ชป ํธ์ถํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ๋ง๊ณ ์ถ์๊ณ ์ฒ์์๋ AssertionError( )๋ฅผ ํตํด ์ด๋ฅผ ๋ฐฉ์ดํ๋ ค ํ์ต๋๋ค. ํ์ง๋ง AssertionError์ ๊ฒฝ์ฐ ์ด๋ค ๊ฒ์ ๊ฒ์ฆํ๋ ค๊ณ ํ๋์ง ์๋๊ฐ ๋ช ํํ ๋๋ฌ๋์ง ์์์ต๋๋ค. **Assertion์ธ๋ฐ ์ด๋ค ๊ฒ์ ๊ฒ์ฆํ๋ คํ์ง..?
๊ทธ๋์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ์ ํ ์์ธ๋ฅผ ์ฐพ์๋ณด๋๋ฐ์, ์๊ฐ๋ณด๋ค ๋ง์์ ๋๋ ์์ธ๋ฅผ ์ฐพ์ ์๊ฐ ์์์ต๋๋ค. ๋๋ถ๋ถ์ ์์ธ๋ค์ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ ์์ ์ ์์ธ๋ฅผ ๋์ ธ์ผ ํ์ง๋ง ์์ฑ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ new ์ฐ์ฐ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. **์์ฑ์ ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋๋ผ๋ new ์ฐ์ฐ๊ณผ ๋ฉ์๋๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ ๊ฐ์์ต๋๋ค.
๊ทธ๋์ ๊ฐ๋จํ๊ฒ ์๋๋ฅผ ์ ์ ์๋ ์ปค์คํ ์์ธ๋ฅผ ์ ์ํด ๋ด๋ถ์ ์ ์ธํด์ฃผ์์ต๋๋ค. ์ด๋ ๊ฒ ๋๋ฉด AssertionError์ ๋นํด ์๋๋ฅผ ์กฐ๊ธ ๋ ๋ช ํํ ๋ํ๋ผ ์ ์๊ฒ ๋๊ณ , ์ฌ๊ธฐ๋ค ์ฃผ์๊น์ง ์จ์ฃผ๊ฒ ๋๋ฉด ๊ฐ๋ฐ์๊ฐ ์๋ํ๋ ๋ด์ฉ์ ๋ช ํํ ์ ๋ฌํ ์ ์๊ฒ ๋๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
Nullary Constructor
์ถ๊ฐ๋ก Nullary Constructor๋ผ๋ ํค์๋์ ๋ํด์๋ ์๊ฒ ๋์๋๋ฐ์, ์๋ฌด ์ธ์๋ ๋ฐ์ง ์๋ ์์ฑ์๋ฅผ ๋งํฉ๋๋ค.
2. ์ค๋ฅ
ํ์ง๋ง ์ด๋ ์์ ํ ์๋ชป๋ ๋ฐฉ๋ฒ์ด์๋๋ฐ์, ์ํฐํฐ์(๊ฐ ๊ฐ์ฒด)๋ protected ์ด์์ ๊ธฐ๋ณธ์์ฑ์๊ฐ ์์ด์ผ ํ๋ฉฐ ์์ฑ์ ๋ด๋ถ์ ์์ธ๋ฅผ ๋์ง๋ฉด ์ํฐํฐ๊ฐ ์์ฑ๋๋ ์์ ์ ์์ธ๋ฅผ ๋ฐ์์ํค๊ธฐ ๋๋ฌธ์ ๋๋ค. ์์ธ๊ฐ ๋ฐ์ํ๋ ๊ฐ ๊ฐ์ฒด์ ์ปจํธ๋กค๋ฌ, ์๋น์ค, DTO๋ ์๋์ ๊ฐ์ต๋๋ค.
์ ์ค์ ์ผ๋ก ํฌ์คํธ ๋งจ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ฉด ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ฐ ์ฆ, ๊ฐ ๊ฐ์ฒด์๋ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ํ์ํ๋ค๋ ๋ด์ฉ์ผ๋ก TagName์ ๊ธฐ๋ณธ ์์ฑ์์์ ์์ธ๋ฅผ ์ ์ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ์ค๋ฅ์ ๋๋ค.
์ด๋ฅผ ์ฃผ์์ฒ๋ฆฌํ์ ์ ์์ ์ผ๋ก ์ ๋์ํ๋๋ฐ์, ๋ฐ๋ผ์ ์ด์ ์ ์๋ํ๋ ๋ฐฉ๋ฒ๋ค์ ์๊ณ ์ง์๋ฒ๋ฆฌ๊ณ ์ฃผ์์ผ๋ก ์ด๋ฅผ ๋ํ๋์ต๋๋ค.
3. Conclusion
์ํฐํฐ๊ฐ ์๋ ๊ฐ ๊ฐ์ฒด(@Embedded)๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ๋ด๋ถ์ ๊ธฐ๋ณธ์์ฑ์๋ ๋ฐ๋์ ์ ์ํด์ค์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ ์์ฑ์์ ์์ธ๋ฅผ ์ ์ํด๋ ๋์์ ํ์ง๋ง ์ด๋ ์ํฐํฐ๋ฅผ ์์ฑํ๋ ์์ ์ ์์ธ๋ฅผ ๋ฐ์์ํค๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ํ ์ํฐํฐ ๋ด๋ถ์ ์์ธ๋ฅผ ์ ์ํด๋ ๊ฒฐ๊ณผ๋ ๊ฐ์ต๋๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ ์์ฑ์ ๋ด๋ถ์ ์์ธ๋ฅผ ์ ์ธํด์๋ ์๋๋ฉฐ ์ฃผ์์ผ๋ก ์ด๋ฅผ ์์ฑํ์ง ๋ง๊ฒ์ ๋ช ์์ ์ผ๋ก ๋ํ๋ด์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค.
'๐ฅDEV > Java || Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
@Embedded์ ๊ฐ ๊ฐ์ฒด (0) | 2022.07.17 |
---|---|
private ์์ฑ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๊ธฐ (0) | 2022.07.17 |
๋ธ๋ฆฟ์ง ํจํด (0) | 2022.07.10 |
์ฑ๊ธํค๊ณผ ๋ฌธ์ ์ (0) | 2022.07.10 |
์ผ๊ธ ์ปฌ๋ ์ ๊ณผ ์ฃผ์์ฌํญ (0) | 2022.02.22 |
๋๊ธ