본문 바로가기

인프런 실전! Querydsl - 김영한

(3)
[Querydsl] 동적쿼리 작성하기 BooleanBuilder BooleanBuilder 클래스를 이용하여 파라미터가 null이 아닌 경우에만 and() 메소드로 조건을 추가하고 where 절에 builder 객체를 기입하여 사용한다. List result = searchMember1(usernameParam, ageParam); ... private List searchMember1(String usernameCond, Integer ageCond) { BooleanBuilder builder = new BooleanBuilder(); if (usernameCond != null) { builder.and(member.username.eq(usernameCond)); } if (ageCond != null) { builder.and(me..
[Querydsl] 프로젝션 프로젝션이란? select 절에 어떤 것을 가져올지 결정하는 것을 프로젝션이라고 한다. - 프로젝션 대상이 하나인 경우 타입을 명확하게 정할 수 있다. // String 값인 member.username 하나만 조회해 올때 List result = queryFactory .select(member.username) .from(member) .fetch(); - 프로젝션 대상이 둘 이상인 경우 튜플이나 DTO로 조회해온다. List result = queryFactory .select(member.username, member.age) .from(member) .fetch(); 이때 Tuple은 Querydsl에서 제공하는 Tuple이기 때문에 repository 계층에서 사용하는 것은 괜찮지만 servi..
[Querydsl] Querydsl 적용하기 Querydsl 사용이유 SpringBoot와 Spring Data JPA의 조합으로 개발자가 직접 SQL 문을 작성할 필요없이 메소드로 동일한 기능을 제공해주기 때문에 매우 편리해졌지만 아직도 복잡한 쿼리와 동적 쿼리를 작성하는데는 한계가 있다. Querydsl은 위와 같은 문제점을 해결해주고 여러가지 편리한 기능들을 제공해준다. 아래 코드는 member1이라는 username을 갖는 Member를 조회하는 기능을 JPQL과 Querydsl을 이용하여 테스트한 코드이다. 먼저 JPQL의 경우 sql문을 String 타입으로 작성했지만 Querydsl은 자바코드로 작성됐다. 그렇기 때문에 JPQL은 해당 기능을 사용하기 전에는 무엇이 잘못되었는지 확인할 수 없지만(런타임 에러) Querydsl은 컴파일 ..