• 다대일: @ManyToOne
• 일대다: @OneToMany
• 일대일: @OneToOne
• 다대다: @ManyToMany
테이블과 달리 객체는 참조의 방향이 존재한다. 따라서 양방향으로 참조하기 위해서는 단방향 연관관계를 2개 설정해야 한다.
최대한 단방향으로 설계 후 필요시에 양방향 연관관계를 설정하는 것을 권장.
양방향 관계일 때 두 객체중 테이블의 외래키를 관리할 곳을 지정해야 하며, 외래키를 관리하는 곳을 연관관계의 주인이라고 표현한다.
주로 '다'인 쪽이 연관관계의 주인
주 테이블에 있는 경우는 @ManyToOne 과 유사하다.
대상 테이블에 있는 경우, 단방향 매핑은 지원하지 않는다.
주 테이블에 외래키를 두는 경우 객체지향에 더 적합하다. 테이블이 객체와 유사한 구조로 동작하여 JPA매핑이 편리하다.
반대로 대상 테이블에 외래키가 존재하면 일대일에서 일대다로 관계가 변경될 때도 테이블 구조를 유지하기 때문에 데이터베이스 설계에서 유리하다.
다대다 관계는 연결 테이블용 엔티티를 추가하여 다대일 + 일대다 관계로 설계하고 관리한다
EX) ORDER <-> ORDER_ITEM <-> ITEM
실무에서는 절대 다대다 관계를 사용하지 않는다.