ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <Spring JPA> 1.13 단방향 연관관계
    JPA 2020. 4. 22. 09:50

    연관 관계 매핑 시에는 객체와 테이블 간의 연관관계 차이를 이해하고 매핑해야 한다.

    테이블에서는 외래키를 사용하여 매핑하고 JPA 에서는 객체의 참조를 통해 매핑하게 때문에 그 차이를 명확히 이해해야 한다.

     

    객체 연관 관계 매핑만 본다면 방향(양방향, 단방향), 다중성(1:n), 연관관계의 주인 (mapped by) 이 세가지를 이해하고 매핑해야 한다.

     

    연관관계가 왜 필요하냐고 궁금증이 생길 수도 있다. 사실 간단한다. JPA 를 쓰는 것부터 테이블에 있는 데이터를 객체지향적으로 이용하기 위해서 쓴다면, 객체지향적으로 쓰려면 당연히 entity 간의 참조가 되어야 객체지향 언어를 쓰는데 한계가 없지 않을까 싶다.

     

    만약 회원/팀 간의 단방향 연관관계를 매핑한다고 생각해보자.

    지금은 회원에서의 관점만 생각해보자.

     

    회원과 팀은 (일반적인 기준에서) 어떤 것이 N 일까?

    제한은 한 회원은 한 팀만 소속될 수 있다고 하자.

    그렇다면 회원이 n 이다. 그럼 이렇 게 표현할 수 있다. 회원: 팀 = n : 1

     

    회원 entity 에 팀을 추가하고 다음 두가지 어노테이션을 추가한다.

    @ManyToOne

    @JoinColumn(name="TEAM_ID)

     

    대충 예상될 것이다. 회원 테이블에는 외래키로 team_id 가 들어있으므로 JPA 는 저기 어노테이션을 기반으로 아 이건 ManyToOne 이니까, 회원 엔티티에서는 회원 한명 조회할 때 팀 데이터 한건만 가져오면 되겠군. 그럼 조인을 하면 될텐데 team_id 컬럼으로 팀엔티티를 조회해서 가져오면 되겠군 

    그리고 반대로 회원 엔티티에 저장이 일어날 때, 엔티티 저장도 위의 어노테이션을 기준으로 할 수 있게 된다.

     

     

    반응형
Designed by Tistory.