[MyBatis] resultMap Association 사용하여 매핑관계 데이터 가져오기

Yeoonnii·2022년 11월 7일
0

MyBatis

목록 보기
4/10

게시글Board은 회원MemberManyToOne구조를 갖고있다

게시글 조회시 회원의 정보를 꺼낼때 resultMap을 사용하여 매핑관계의 데이터를 가져왔다

공식문서 참고 - 관계를 위한 내포된 결과(Nested Results)

resultMap에서 Association과 Collection

Association과 Collection을 이용하면 훨씬 편리하고 효율적으로 코드를 작성할 수 있다

Association

Association은 has one 관계를 설정할 수 있다
Board 게시글 입장에서는 Member 작성자(회원)는 하나만 존재한다
따라서, MyBatis 내 resultMap 내부에서 association을 활용해 데이터를 가져올 수 있다

Collection

Collection은 has many 관계를 설정할 수 있다
즉, Member - Board1 - N 관계이다
위와 달리 Member 작성자는 하나인데 Board 게시글은 여러 개가 존재한다


xml에서 resultMap 사용


RestController 출력결과

@ToString.Exclude

출력 결과 BOARD의 하위 엔티티 MEMBER가 출력되지 않았다

하지만 BOARD 하위의 MEMBER의 USERID를 꺼내보니 값이 출력되는것을 확인할 수 있었다

BOARD 엔티티에 MEMBER 매핑을 확인 해보니 @ToString.Exclude 어노테이션이 있는걸 확인했다

해당 어노테이션을 제거하니 MEMBER가 출력되는것을 확인할 수 있었다

하위 엔티티에서 추가적인 데이터 출력시 JOIN을 사용

mybatis에서는 하위 엔티티의 id만 출력이 가능하다고 한다
id를 제외하고 추가적인 정보가 필요한 경우는 JOIN을 사용하여 데이터를 추가적으로 가져와 사용해야한다


참고링크 - [MyBatis] MyBatis의 Association과 Collection

0개의 댓글