์์๊ด๊ณ ๋งคํ
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์ ๊ด๊ณ๊ฐ ์๋ค.(์ํผํ์ ์๋ธํ์ ๊ด๊ณ๋ผ๋ ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ์ด ๊ฐ์ฒด ์์๊ณผ ์ ์ฌํ๋ค)
์ํผํ์ ์๋ธํ์ ๋ ผ๋ฆฌ ๋ชจ๋ธ์ ์ค์ ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ
1. ๊ฐ๊ฐ ํ ์ด๋ธ๋ก ๋ณํ -> ์กฐ์ธ ์ ๋ต (์ ์)
- ํ ์ด๋ธ ์ ๊ทํ
- ์ธ๋ ํค ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด ํ์ฉ ๊ฐ๋ฅ
- ์ ์ฅ๊ณต๊ฐ ํจ์จํ
- ์กฐํ์ ์กฐ์ธ์ ๋ง์ด ์ฌ์ฉ -> ์ฑ๋ฅ ์ ํ, ์กฐํ ์ฟผ๋ฆฌ๊ฐ ๋ณต์กํจ
- ๋ฐ์ดํฐ ์ ์ฅ์ INSERT ์ฟผ๋ฆฌ๊ฐ 2๋ฒ ํธ์ถ ๋๋ค.
๋น์ง๋์ค์ ์ผ๋ก ์ค์ํ๊ณ ๋ณต์กํ ๋ ์ ํ!
๋ถ๋ชจ ํด๋์ค ์ค์
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn
์์ ํด๋์ค ์ค์ -> dtype์ ํ์๋ ์ด๋ฆ์ ์ ํด ์ค ๊ฒฝ์ฐ
@DiscriminatorValue(name = "book")
2. ํตํฉ ํ ์ด๋ธ๋ก ๋ณํ -> ๋จ์ผ ํ ์ด๋ธ ์ ๋ต
ํ ํ ์ด๋ธ์ ๋ฃ๊ณ DTYPE ๋ก ๊ตฌ๋ถํ๋ค.
ํ ํ ์ด๋ธ์์ ์กฐ์ธ ์์ด ์กฐํํ๊ธฐ ๋๋ฌธ์(์กฐํ ์ฟผ๋ฆฌ๊ฐ ๋จ์ํจ) ์ฑ๋ฅ์ด ์ข๋ค. ํ์ง๋ง ํด๋น ๊ฐ์ด ์๋ ๋ null์ด ๋ค์ด๊ฐ๋ค.
ํ ํ ์ด๋ธ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ๋ง์์ง ๊ฒฝ์ฐ ์กฐํ ์ฑ๋ฅ์ด ์คํ๋ ค ๋๋ ค์ง ์ ์๋ค.
* ๋ฐ์ดํฐ๋ ์๊ณ ๋จ์ํ ๊ฒฝ์ฐ ๋จ์ผ ํ ์ด๋ธ ์ ํ!
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn // ํ์
3. ์๋ธํ์ ํ ์ด๋ธ๋ก ๋ณํ -> ๊ตฌํ ํด๋์ค๋ง๋ค ํ ์ด๋ธ ์ ๋ต (๋น์ถ์ฒ)
- ๋ถ๋ชจ ํด๋์ค๊ฐ ์๋ ๊ฒฝ์ฐ
- ์ค๋ณต ์ปฌ๋ผ ์ ๋ถ ๋์ด
- ๋จ์ํ๊ฒ ๊ฐ์ ๋ฃ๊ณ ๋นผ๊ธฐ ์ข์ง๋ง ๋ช ํํ๊ฒ ์กฐํํ ๋ ๋นผ๊ณ ๋ ์กฐํํ ๋ union all๋ก ๋ณต์กํ ์ฟผ๋ฆฌ๊ฐ ์์ฑ๋๋ค.
- ๊ฐ๊ฐ์ ํ ์ด๋ธ์ ๋ชจ๋ ์กฐํํด์ ์ฐพ์์ผํด์ ๋นํจ์จ์ ์ด๋ค.
Mapped Superclass - ๋งคํ ์ ๋ณด ์์
๊ณตํต ๋งคํ ์ ๋ณด๊ฐ ํ์ํ ๋ ์ฌ์ฉํ๋ค.
์๋ฅผ ๋ค์ด ๋ชจ๋ ํด๋์ค์ ๋ฑ๋ก๋ ์ง, ์์ ๋ ์ง ๊ฐ ์์ด์ผ ํ๋ค๊ณ ํ์ ๋ ์ค๋ณต์ผ๋ก ์ ์ธ ํ๊ธฐ ๋ณด๋ค๋ ๊ณตํต ํด๋์ค๋ฅผ ๋ง๋ค์ด ์์๋ฐ๋๋ก ํ๋ค.
* ์์๊ด๊ณ ๋งคํ์ ์๋๋ค. ์ํฐํฐ๊ฐ ์๋๋ฏ๋ก ํ ์ด๋ธ๊ณผ ๋งคํ๋์ง ์๋๋ค. ์์ ํด๋์ค์ ๋งคํ ์ ๋ณด๋ง ์ฌ๊ณตํ ๋ฟ์ด๋ค.
* ์ง์ ์์ฑํด์ ์ฌ์ฉํ ์ผ์ด ์์ผ๋ฏ๋ก ์ถ์ ํด๋์ค ๊ถ์ฅํ๋ค.
@MappedSuperclass
public abstract class BaseEntity {
private LocalDateTime createdDate;
private LocalDateTime modifiedDate;
}
๊ทธ ํ์ ํด๋น ํ๋๋ฅผ ์ฌ์ฉํ ํด๋์ค์์ ์์์ ๋ฐ๋๋ค. ๊ทธ ํ์ JPA๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ด ์์๋ฐ์ ํ๋๋ฅผ ํฌํจํ ํ ์ด๋ธ์ ๋ง๋ ๋ค.
Hibernate:
create table Category (
CETEGORY_ID bigint not null,
createdDate timestamp,
modifiedDate timestamp,
name varchar(255),
PARENT_ID bigint,
primary key (CETEGORY_ID)
)
๊ณตํต ํ๋์ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์๋ค๊ณ ํด๋ MappedSuperclass ๋ง ์์ ํด์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ ์ฉํ๋ค.
'๐ WEB > JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Querydsl] ๋ด๊ฐ ์ฐพ์ ์ฐ๋ ค๊ณ ์ ๋ฆฌํ ๊ธ (0) | 2022.03.15 |
---|---|
7. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ํ๋ก์์ ์ฐ๊ด๊ด๊ณ ๊ด๋ฆฌ (0) | 2021.05.18 |
5. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๋ค์ํ ์ฐ๊ด๊ด๊ณ ๋งคํ (0) | 2021.05.14 |
4. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ์ฐ๊ด๊ด๊ณ (0) | 2021.05.14 |
3. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ์ํฐํฐ ๋งคํ (0) | 2021.05.13 |