반응형

querydsl 3

[Hibernate] fetchJoin 시에 중복문제, 페이징을 사용하는 경우엔 미발생?

fetchJoin을 하는 경우, 카테시안 곱으로 인해 중복 문제가 발생한다.아래와 같이 클라이밍 팀 관련 데이터가 존재한다고 해보자.1팀, 2팀은 클라이밍고수 라는 동일한 팀 이름을 가지고 있다.(2팀에 계신 분들은 국가대표 선수들이라 진짜 고수고, 1팀은 클라이밍 고수가 되고 싶은 팀이라고 하자 ㅎㅎ) querydsl 메서드아래 querydsl 코드로 '팀이름으로 해당 팀의 회원 명단을 반환'하는 메서드를 생성했다.12345678@Overridepublic ListTeam> findAllMembersByTeamName(String teamName) {    return jpaQueryFactory.selectFrom(team)                          .join(team.member..

[Spring Data JPA] Custom Repository 구현체 클래스명 주의점

Spring Data JPA 를 사용한다면 (특히 querydsl) 아래와 같은 생각이 들 때가 있다. '클래스명 xxxRepositoryImpl 말고 xxxRepositoryImplementation 이라든지, HappyRepositoryImpl 처럼 좀 줄이거나 바꿔서 작성할 수 없나?' 안된다. 아래 에러를 만나게 된다. Failed to load ApplicationContextCaused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name defined in file  빈을 아예 못찾아서 위 에러가 발생하게 된다.원인을 찾기 위해 내려보면, No property foun..

[QueryDSL] queryDSL 프로젝트 적용 후기 및 트러블슈팅

우테코 프로젝트에서는 Spring Data JPA를 사용하고 있었다. Spring Data JPA를 이용하면 인터페이스 생성 만으로도 SimpleJpaRepository에 내장된 다양한 CRUD 메서드를 활용할 수 있고, 추가로 커스텀 메서드도 편리하게 만들 수 있다는 장점이 존재한다. 그러나 Spring Data JPA는 동적 쿼리를 사용하기 어렵고 복잡한 쿼리는 @Query 어노테이션을 이용하여 JPQL을 직접 작성해주어야 한다는 문제점이 존재한다. 따라서 이번 기회에 queryDSL을 적용하여 컴파일 시점에 문법 오류를 잡아낼 수 있게 하고, 복잡한 쿼리를 리팩터링하는 데에 도전해보았다. 특히 위처럼 DTO를 반환하는 repository method의 경우 @Query로 작성하면 DTO 패키지명을 ..

반응형