[ 김영한 Querydsl #8 ] - 중급 문법 (5) : 조회 API 테스트

정동욱·2023년 7월 20일
post-thumbnail

이번 글에서는 더미 데이터를 넣고 지난 번에 만든 동적 쿼리 조회문을 사용해 회원을 조회하는 API를 만들어보겠습니다.

먼저 더미 데이터를 만들텐데요, @PostConstruct 어노테이션을 이용해 스프링 컨테이너가 띄워질 떄 데이터가 DB에 들어가도록 하겠습니다.

@Profile("local")
@Component
@RequiredArgsConstructor
public class InitMember {

    private final InitMemberService initMemberService;

    @PostConstruct
    private void init() {
        initMemberService.init();
    }

    @Component
    static class InitMemberService {
       
       @PersistenceContext
        private EntityManager em;

        @Transactional
        public void init() {
            Team teamA = new Team("teamA");
            Team teamB = new Team("teamB");
            em.persist(teamA);
            em.persist(teamB);

            for (int i = 0; i < 100; i++) {
                Team selectedTeam = i % 2 == 0 ? teamA : teamB;
                em.persist(new Member((long) i, "member" + i, i, selectedTeam));
                System.out.println("member" + i + " into DB");
            }
        }
    }

}

그리고 사용자를 조회하는 API를 하나 만들어보겠습니다.

@RestController
@RequiredArgsConstructor
public class MemberController {

    private final MemberJpaRepository memberJpaRepository;

    @GetMapping("/members/v1")
    public List<MemberTeamDto> searchMemberV1(MemberSearchCondition condition) {
        return memberJpaRepository.search2(condition);
    }
}

그리고 포스트맨으로 테스트를 해보겠습니다. 아래 URL로 파라미터와 함께 요청을 보내면

조건대로 회원이 조회되는 것을 확인할 수 있습니다.

단순한 테스트였고 다음 글에서는 MemberRepository를 EntityManager를 사용해 직접 만들지 않고, JpaRepository를 구현해 Querydsl을 사용해보겠습니다.

profile
거인의 어깨 위에서 탭댄스를

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

정말 좋은 정보 감사합니다!

답글 달기