-
<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 컬럼으로 팀엔티티를 조회해서 가져오면 되겠군
그리고 반대로 회원 엔티티에 저장이 일어날 때, 엔티티 저장도 위의 어노테이션을 기준으로 할 수 있게 된다.
반응형'JPA' 카테고리의 다른 글
<Spring JPA> 1.15 양방향 연관관계와 연관관계의 주인 - 주의점 (0) 2020.04.27 <Spring JPA> 1.14 양방향 연관관계와 연관관계의 주인1 (0) 2020.04.23 <Spring JPA> 1.12 요구사항 분석과 기본매핑 (0) 2020.04.21 <Spring JPA> 1.11 기본키 매핑 (0) 2020.04.21 <Spring JPA> 1.10 필드와 컬럼매핑 (0) 2020.04.18