외래키 지정
- RDB는 관계형 데이터베이스라 사용할 외래키 하나만 있으면 되지만 java는 객체지향 언어이기 때문에 객체를 전달해주는게 좋다고 한다.
- User의 usr_id를 Board에서 외래키로 사용하고자 할 경우, user_id만을 외래키로 사용하는 것이 아닌 User 객체 자체를 외래키로 사용하는 것이다.
연관관계 매핑
방향
- 단방향 관계 : 한 쪽만 참조
- 양방향 관계 : 서로 참조
엔티티가 서로 참조해야할 경우 양방향으로, 한쪽만 알면 될 경우에 단방향으로 매핑
다중성
@OneToOne
- 일대일
- 하나의 엔티티가 하나의 엔티티만 사용 가능 (하나의 member는 하나의 basket 사용 가능)
- 1:1 관계에서 대상 테이블에 외래키 저장하는 단방향 관계는 JPA에서 지원 X
@OneToMany
- 일대다 - 1이 연관관계의 주인 (1에서 외래키 관리함, 테이블 일대다 관계는 N쪽에 외래키 있음)
- 하나의 엔티티가 여러 엔티티 사용 가능 (하나의 member는 여러 개의 phone 가질 수 있음)
- 권장 X
@ManyToOne
- 다대일 - 외래키를 다에 부여함
- 많이 사용
//하나의 board가 하나의 location 사용 가능, 하나의 location에 여러 board 존재
//board에서 외래키를 관리할 경우 N:1, ManyToOne 사용
@ManyToOne
@JoinColumn(name = "loc_id")
private Location location;
- 속성
- targetEntity
- cascade
- fetch
- optional (false 설정 시 해당 객체에 null 들어갈 수 있음)
@ManyToMany
- 다대다
- 반드시 중간 테이블을 두어 일대다 + 다대일 형태로 변형애 줘야 함
- JPA에서는 하이버네이트가 중간 테이블을 알아서 만들어 처리해줌
- 사용 X