๋ณด์กด ๋ฌธ์
์ค๋ ์ฐ๋ฆฌ๋ Hibernate ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ์๋กญ๊ณ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ๊ณํ์ ๊ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค.
ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ๋ ์์ ๊ด๊ณ์ ์ํด ์๋ก ๊ด๋ จ๋ ํด๋์ค ์งํฉ์ ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ค๋ ์ธ ๊ฐ์ง ํด๋์ค๊ฐ ์๋ค๊ณ ์์ํด ๋ณด์ญ์์ค.
class User {
int id;
String name;
LocalDate birthday;
}
class Employee extends User {
String occupation;
int salary;
LocalDate join;
}
class Client extends User {
String address;
}
ํด๋์ค๋ ์๋ก ์์๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ์ ์ ์ด๋ฌํ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ธฐ ์ํด Hibernate๋ฅผ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ๋ค๋ ๊ฒ์ ๋๋ค.
์๋ฃจ์ ์ ํ
Hibernate์๋ ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ๊ณผ ์ฐ๊ฒฐํ ์ ์๋ 4๊ฐ์ง ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- ๋งคํ๋ ์ํผํด๋์ค
- ์ฑ๊ธ ํ ์ด๋ธ
- ์กฐ์ธ๋ ํ ์ด๋ธ
- ํด๋์ค๋ณ ํ ์ด๋ธ
๊ฐ ์ ๋ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ณ ์ ํ ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํฉ๋๋ค. ๋๋๋ก ๊ทธ๋ค์ ๋งค์ฐ ๋ณต์กํฉ๋๋ค. ๊ทธ๋ฌ๋ HQL์ ๋ํ ์ฟผ๋ฆฌ๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ๋ฐ๋ก ํ์ด๋ฒ๋ค์ดํธ์ ์ฅ์ ์ด ํ์ฐํ ๋๋ฌ๋๋ ๊ฒฝ์ฐ๋ค.
๋๋ ์ด ์ฉ์ด๋ค์ด ๋ฌ์์์ด๋ก ๋ฒ์ญ๋ ๊ฒ์ ๋ค์ด๋ณธ ์ ์ด ์์ผ๋ฏ๋ก ์์ด๋ก ๋ฐ์ํ๋ ๊ฒ๋ ์ถ์ฒํฉ๋๋ค.
์๋์์๋ ๊ฐ๊ฐ์ ์๋ฏธ๋ฅผ ๋ถ์ํฉ๋๋ค.
@MappedSuperClass
๊ฐ์ฅ ๊ฐ๋จํ ์๋ฃจ์ ๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๊ฐ ํด๋์ค์ ๋ํ ๋ณ๋์ ํ ์ด๋ธ์ด ์์ต๋๋ค . ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
CREATE TABLE user {
id INT,
name VARCHAR,
birthday DATE
}
CREATE TABLE employee {
id INT,
name VARCHAR,
birthday DATE,
occupation VARCHAR,
salary INT,
join DATE
}
CREATE TABLE client {
id INT,
name VARCHAR,
birthday DATE,
address VARCHAR
}
์ด๋ฌํ ํ ์ด๋ธ์ ํด๋์ค๊ฐ ๊ณ์ธต ๊ตฌ์กฐ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๋ ๊ฒ์ ์ฌ์ฉ์๋ง ์ ์ ์์ต๋๋ค . Hibernate๊ฐ ์ด๊ฒ์ ๋ํด์๋ ์๊ณ ์ถ๋ค๋ฉด ๋ถ๋ชจ ํด๋์ค์ @MappedSuperclass ์ฃผ์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค . ๊ทธ๊ฒ ์์ด๋ Hibernate๋ ๋จ์ํ ๋ถ๋ชจ ํด๋์ค์ ํ๋์ ์ฃผ์์ ๋ฌด์ํ ๊ฒ์ ๋๋ค.
์ด ์ฃผ์์ด ์๋ ํด๋์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
@MappedSuperclass
class User {
int id;
String name;
LocalDate birthday;
}
@Entity
class Employee extends User {
String occupation;
int salary;
LocalDate join;
}
@Entity
class Client extends User {
String address;
}
์ด๊ฒ์ ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ฅ ์์์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ค์ ๋ก ํด๋์ค์์ ์ค๋ณต ํ๋๋ฅผ ํผํ ์๋ง ์์ต๋๋ค.
HQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ ์ ํ์ด ๋ช ์์ ์ผ๋ก ์ง์ ๋ ํญ๋ชฉ๋ง ๋ฐํํฉ๋๋ค. HQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ์ฌ์ฉ์, ์ง์, ๊ณ ๊ฐ ๋ฑ ๋ชจ๋ ์ฌ์ฉ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
GO TO FULL VERSION