본문 바로가기
Jpa

jpa 외래키 연관관계 맵핑 주인은 외래키가 존재하는 곳으로 설정

by 무대포 개발자 2020. 12. 22.
728x90
반응형

jpa 외래키 연관관계 맵핑 주인은 외래키가 존재하는 곳으로 설정

외래키 연관관계 맵핑 주인은 외래키가 있는 곳으로 설정

  • 회원과 주문을 기준으로 1명의 회원은 여러 번의 주문을 할 수 있음. 일대다 관계임.
  • 주문 테이블에 FK 가 있을것이고, 이 것을 연관관계 맵핑 주인으로 설정하는 것이 기본 원칙
  • 만약 반대로 맵핑 주인을 설정한다면 주문 테이블에 위해 회원 테이블이 변경될 수 있기에 여러 번 호출. 이는 성능 문제를 발생시킴.
  • 주문 테이블에 맵핑 주인이 있으면 1번만 호출하면 전부 변경할 수 있는데.
  • 주인인 쪽은 읽기,쓰기가 가능하고. 주인이 아닌 쪽은 읽기만 가능. 회원은 읽기만. 주문은 읽기, 쓰기 가
  • 소스로 설명하면 다음과 같음.
// 회원 테이블, 주문 테이블이 있음.
// 둘은 일대다 관계이고.
// 주문 테이블에 FK 가 있으므로, 회원 class 가서 mappedBy 를 설정해줌.
// 이 mappedBy 를 설정해주는건 다음과 같음. 주문 테이블을 기준으로 FK 를 바꿔라. 

@Entity
public class Orders {

    @Id
    private Long id;

    @ManyToOne
    @JoinColumn(name = "member_id")
    private Member member;
}

@Entity
public class Member {

        @Id
        @Column(name = "member_id")
        private Long id;

        @OneToMany(mappedBy = "member") // 이 때, 주의할점은 Orders 클래스의 Member 변수명을 적어줘야 함.
        private List<Orders> orders = new ArrayList<>();
}

댓글