미운 오리 새끼의 우아한 개발자되기

[JPA] 연관관계 매핑 기초 (1) 단방향 연관관계 본문

Spring & Spring Boot/Spring

[JPA] 연관관계 매핑 기초 (1) 단방향 연관관계

Serina_Heo 2023. 4. 9. 16:25

1. 연관관계 매핑을 이해하기 위한 기초

  • 방향(Direction): [단방향, 양방향]
  • 다중성(Muliplicity) : [다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)] 
  • 연관관계의 주인(Owner): 객체를 양방향 연관관계로 만들려면 연관관계의 주인을 정해야함

 

2. 단방향 연관관계

  • 객체 연관관계 vs. 테이블 연관관계
    • 객체는 참조(Reference)로 연관관계를 맺음 -> 참조를 통한 연관관계는 언제나 단방향임. 즉, 양뱡향이라는 것도 서로 다른 단뱡향 2개를 양방향으로 보이게 만드는 것
    • 테이블은 외래 키(Foreign Key)로 연관관계를 맺음
// 단방향
class A {
	B b;
}

class B { }


// 양방향
class A {
	B b;
}

class B {
	A a;
}

 

  • 객체 관계 매핑 (다대일(N:1), 단방향)
@Entity
public class Member {
	
    @Id
    @Column(name = "MEMBER_ID")
    private Long id;
    
    private String username;
    
    // 연관관계 매핑
    @ManyToOne // 다(Member)대일(Team)
    @JoinColumn(name = "TEAM_ID") // 외래키를 매핑할 때 쓰는 annotation. 매핑할 외래키 이름을 씀
    private Team team;
    
    // 연관관계 설정
    public void setTeam(Team team) {
    	this.team = team;
    }
    
    // Getter, Setter...

}
@Entity
public class Team {
	
    @Id
    @Column(name = "TEAM_ID")
    private Long id;
    
    private String name;
    
    // Getter, Setter...

}

 

Reference : 자바 ORM 표준 JPA 프로그래밍 (김영한 저)