ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 연관관계 편의메서드를 사용해야 하는 이유
    카테고리 없음 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

Designed by Tistory.