가장 잘 짠 ERD를 예시로 알아보자
부모
| id | name |
|---|---|
| parent1 | parent1 |
| parent2 | parent2 |
| parent3 | parent3 |
자식
| id | name | parent_id |
|---|---|---|
| 1 | child1 | parent1 |
| 2 | child2 | parent2 |
| 3 | child3 | parent3 |
class Parent {
String id;
String name;
}
class Child {
int id;
String name;
Parent parent
}
Child 객체는 Parent 객체를 참조 할 수 있다.(필드를 가졌기 때문에)
→Child 객체를 통해 Parent 객체의 맴버에 접근 할 수 있다.
→Parent는 Child 객체에 접근 불가 하니 단방향이다 (Child → Parent)
ERD: 방향 X (Join이 있기 때문)
객체: 방향 O (객체를 가지지않으면 접근 불가)
A 클래스가 B 객체 필드를 가지면 A→B 단방향관계
양방향→ 정확히는 서로 단방향
A,B클래스가 A,B객체를 서로 필드로 가지고 있는 것
FK를 관리(수정, 삭제 등) 하는 객체
→연관 관계의 주인은 ERD를 보고 정하는 것
예시) 호텔이 방들을 가지고 있다. 하지만 방들이 호텔ID를 FK로 가지고 있으니 방들이 주인이 되어야한다.
class Hotel {
String name;
List<Room> rooms;
}
class Room {
String name;
Hotel hotel; //쓸모 없지만 FK 처럼 추가
}
@Entity
class Child {
@Id
int id;
String name;
@ManyToOne
@JoinColmn("parent_Id")
Parent parent
}
@Entitiy
class Parent {
@Id
String id;
String name;
@Column(name="account_number"
String accountNumber
}