์์๊ด๊ณ ๋งคํ
์์๊ด๊ณ ๋งคํ์ด๋ , ๊ฐ์ฒด์ ์์ ๊ตฌ์กฐ์ DB์ ์ํผํ์ ์๋ธํ์ ๊ด๊ณ๋ฅผ ๋งคํํ๋ ๊ฒ์ด๋ค .
๊ฐ์ฒด ์์ ๊ตฌ์กฐ

๊ฐ์ฒด์๋ ์์๊ด๊ณ๊ฐ ์๋ค .
์ํผํ์ -์๋ธํ์ ๋ ผ๋ฆฌ ๋ชจ๋ธ
ํ์ง๋ง ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์ ๊ด๊ณ๊ฐ ์๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์ํผํ์ ,์๋ธํ์ ๊ด๊ณ๋ผ๋ ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ์ด ๊ฐ์ฒด ์์๊ณผ ์ ์ฌํ๋ค.
์ํผํ์ ์๋ธํ์ ๋ ผ๋ฆฌ ๋ชจ๋ธ์ ์ค์ ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ก ๊ตฌํํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
JOINED , SINGLE_TABLE , TABLE_PER_CLASS
@Inheritance ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ๋ถ๋ชจ ํด๋์ค์์ ์ ๋ต์ ์ ํํ ์ ์๋ค.
JOINED
๊ฐ๊ฐ ํ ์ด๋ธ์ ์์ฑํ๊ณ ์กฐํํ ๋๋ join ํ์ฌ ๊ฐ์ ธ์จ๋ค
DTYPE : ํ์ ์ ๊ตฌ๋ถํ๊ธฐ ์ํ ์ปฌ๋ผ์ด๋ค.
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn
public class Item {
@DiscriminatorColumn : ๋ถ๋ชจ ํด๋์ค์์ ์ ์ธ. ํ์ ํด๋์ค๋ฅผ ๊ตฌ๋ถํ๋ ์ฉ๋์ ์ปฌ๋ผ์ด๋ค. ๊ด๋ก๋ default = DTYPE
@DiscriminatorValue("A")
public class Album extends Item
@DiscriminatorValue("name") : ํ์ ํด๋์ค์ ์ ์ธ. ์ํฐํฐ๋ฅผ ์ ์ฅํ ๋ ์ํผํ์ ์ ๊ตฌ๋ถ ์ปฌ๋ผ์ ์ ์ฅํ ๊ฐ์ ์ง์ ํ๋ค.
์ด๋ ธํ ์ด์ ์ ์ ์ธํ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํด๋์ค ์ด๋ฆ์ด ๋ค์ด๊ฐ๋ค.
SINGLE_TABLE
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
ํ ์ด๋ธ ํ๋์ ๋ค ๋ฃ์ด๋๊ณ DTYPE ์ผ๋ก ๊ตฌ๋ถํ๋ค.
@DiscriminatorColumn
๋จ์ผ ํ ์ด๋ธ ์ ๋ต์ DTYPE ์ด ํ์๋ก ์์ฑ๋๋ค.
@DiscriminatorColumn ์๋ตํด๋ ์๋์ผ๋ก DTYPE ์์ฑ
์๊ด์๋ ๋ฐ์ดํฐ๋ค์ null ๋ก ๋ค์ด๊ฐ๋ค .
TABLE_PER_CLASS
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
๋ถ๋ชจ ํ ์ด๋ธ์ ์์ ๋ฒ๋ฆฌ๊ณ ๊ทธ ์์ฑ๋ค์ ๋ฐ์ผ๋ก ๋ด๋ฆฐ๋ค .
๊ตฌํ ํด๋์ค๋ง๋ค ํ ์ด๋ธ์ ์์ฑํ๋ ์ ๋ต
์ด ์ ๋ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์์ ORM ์ ๋ฌธ๊ฐ ๋ ๋ค ์ถ์ฒํ์ง ์๋๋ค.
์กฐ์ธ ์ ๋ต์ผ๋ก ์ค๊ณ๋ฅผ ํ๋ค๊ฐ ๋จ์ํ๊ณ ํ์ฅ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ฉด ๋จ์ผ ํ ์ด๋ธ ์ ๋ต์ ์ด์ฉํ์ !
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ | ๊ฐ์
JPA๋ฅผ ์ฒ์ ์ ํ๊ฑฐ๋, ์ค๋ฌด์์ JPA๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ์กฑํ์ ๋ถ๋ค์ด JPA์ ๊ธฐ๋ณธ ์ด๋ก ์ ํํํ๊ฒ ํ์ตํด์ ์ด๋ณด์๋ ์ค๋ฌด์์ ์์ ์๊ฒ JPA๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค., - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ
www.inflearn.com