-
연관관계 편의메서드를 사용해야 하는 이유카테고리 없음 2022. 7. 31. 23:40
문제
상황: 특정 post의 누적신고가 몇개인지 확인하는 서비스 테스트
- PostReport와 Post는 다대일 양방향 관계
- Post와 PostReport 5개를 생성 후 jpa를 통해 save
- jpaRepository에서 post를 findById를 통해 조회하면 Post 내부의 List<PostReport> 필드에 PostReport가 자동으로 채워질거라 기대
- 하지만 post.getPostReport.size()가 0이 나옴
기대와 결과가 다른 이유
- 테스트코드라 하나의 @Transactional로 묶임
- 따라서 jpa에서 findById가 실행됬을때 1차캐시에서 조회함
- post와 postReport가 편의메서드를 통해 맵핑되지 않아 캐시에서 List<PostReport>에 아무것도 없는 Post가 조회됨
해결방법
- 편의메서드를 통해 객체 사이의 관계를 연결해주자
문제가 발생한 코드
수정전
연관관계 편의 메서드 없음
- domain/PostReport
수정후
연관관계 편의 메서드 추가
- domain/PostReport
문제
상황: 특정 post의 누적신고가 몇개인지 확인하는 서비스 테스트
- PostReport와 Post는 다대일 양방향 관계
- Post와 PostReport 5개를 생성 후 jpa를 통해 save
- jpaRepository에서 post를 findById를 통해 조회하면 Post 내부의 List<PostReport> 필드에 PostReport가 자동으로 채워질거라 기대
- 하지만 post.getPostReport.size()가 0이 나옴
기대와 결과가 다른 이유
- 테스트코드라 하나의 @Transactional로 묶임
- 따라서 jpa에서 findById가 실행됬을때 1차캐시에서 조회함
- post와 postReport가 편의메서드를 통해 맵핑되지 않아 캐시에서 List<PostReport>에 아무것도 없는 Post가 조회됨
해결방법
- 편의메서드를 통해 객체 사이의 관계를 연결해주자
문제가 발생한 코드
수정전
연관관계 편의 메서드 없음
- domain/PostReport
수정후
연관관계 편의 메서드 추가
- domain/PostReport