JPA 연관관계

킹콩(King Kong)·2025년 1월 5일

객체 연관관계 vs 테이블 연관관계

  • 테이블 연관관계 : FK(외래키)로 관계 설정
  • 객체 연관관계 : 상대방 객체를 참조(변수)로 설정


1:N or N:1 (일대다, 다대일) - 단방향

  • Member : @ManyToOne + @JoinColumn을 설정하면 단방향
    • Team 에도 mappedBy를 설정하면 양방향
  • 일대다 단방향 연관관계는 반드시 @JoinColumn을 사용해야 한다.
    • 사용하지 않으면 JoinTable 방식을 사용한다.
    • Team_Member 라는 중간 테이블이 생성된다.
@Entity
public class Member {
    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "USERNAME")
    private String name;

    private int age;

    @ManyToOne
    @JoinColumn(name = "TEAM_ID")
    private Team team;
}


1:N or N:1 (일대다, 다대일) - 양방향

  • Member : @ManyToOne + @JoinColumn 기술
  • Team : @ManyToOne + mappedBy 기술
@Entity
public class Member {
    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "USERNAME")
    private String name;

    private int age;

    @ManyToOne
    @JoinColumn(name = "TEAM_ID")
    private Team team;
}

@Entity
public class Team {
    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "TEAN_NAME")
    private String teamName;

    @OneToMany(mappedBy = "team")
    private List<Member> members = new ArrayList<>();
}

참고자료

profile
IT를 쉽게 이해해 보아요~😄

0개의 댓글