์ฌํ๊น์ง ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์์ ํ ์ชฝ์ผ๋ก์ ์ฐธ์กฐ๋ง ์ผ์ด๋๋ ๊ฒฝ์ฐ๋ ์์๋ ๊ฒ ๊ฐ์์ ์๋ฐฉํฅ ๋งคํ๋ง ์ฃผ๋ก ํ์๋๋ฐ, ๊ทธ๋ฌ๋ค๋ณด๋ ์คํ๋ ค ์๋์ ์ผ๋ก ๋จ์ํ ๋จ๋ฐฉํฅ ๊ด๊ณ์ ๋ํ ๊ฒฝํ์ ์ง์์ด ์ ์ ๊ฒ ๊ฐ์์ ์ด๊ฒ์ ๊ฒ ์๋ํด๋ดค๋ค.
์์ฌ์ด๋ํ๊ฒ ์ฐธ์กฐ๊ฐ ์ผ์ด๋๋ ๊ฒฝ์ฐ๋ฉด ๋จ๋ฐฉํฅ์ผ๋ก ์ถฉ๋ถํ๋ฐ, ์ํธ๊ฐ ์ฐธ์กฐ ํด์ผํ๋ ์ํฉ์ด ์์๊ฑฐ๊ฐ์ผ๋ฉด ์๋ฐฉํฅ์ด ์คํ๋ ค ํธํ๋ค. (์ ์ด์ ๊ฑฐ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ์๋ฐฉํฅ ๊ด๊ณ๊ฐ ํ์ํ๋ค)
๊ทธ๋ฌ๋ค๊ฐ ์์ฐ์ค๋ ์๊ธด ์๋ฌธ์:
๋จ๋ฐฉํฅ ๋งคํ์ ๊ฑธ์ด์ค ํ ์ด๋ธ์ด ์๋ ๋ฐ๋ํธ์ FK๊ฐ ์๊ธด๋ค.(๋ฐ๋ํธ์์๋ ๋งคํ ์ฌ๋ถ๋ฅผ ๋ชจ๋ฅผํ ๋ฐ)
@Entity
public class Order {
@Id @GeneratedValue
private Long id;
@OneToMany
@JoinColumn(name = "order_id") // fk
private List<OrderItem> items = new ArrayList<>();
}
@Entity
public class OrderItem {
@Id @GeneratedValue
private Long id;
}
Order
ํ
์ด๋ธ์ ์ธ๋ ํค๋ฅผ ๋ง๋ค ์ ์๋ค.OrderItem
ํ
์ด๋ธ์ ์ธ๋ ํค๊ฐ ์๊ธฐ๋๋ฐ,OrderItem
์ชฝ์์๋ Order
๋ ๋งคํ์ด ๊ฑธ๋ ธ๋ค๋ ์ฌ์ค์ ๋ชจ๋ฆ (๊ฐ์ฒด-ํ
์ด๋ธ ๋ถ์ผ์น)Hibernate:
create table order (
id int8 not null,
customer_name varchar(255),
primary key (id)
) -- fk๋ ์์(์กฐ์ธ์ปฌ๋ผ ๋ฌด์)
Hibernate:
create table order_item (
id int8 not null,
order_id int8, -- fk
product_name varchar(255),
quantity int4,
primary key (id)
)
Hibernate:
alter table order_item
add constraint FK_order_item_order
foreign key (order_id) references order -- ์ค์ ๋ก๋ n-side์ ์ ์์ฑ๋ fk
insert
2๋ฒ, update
1๋ฒ (์ถ๊ฐ ์ฟผ๋ฆฌ ๋ฐ์)order_id(FK)๊ฐ ์๋์ผ๋ก ํด๊ฒฐ์ด ์๋๋, ์ถ๊ฐ ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.