You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Querydsl 은 별도의 스프링 예외 추상화를 지원하지 않는다. 대신에 JPA에서 학습한 것처럼@Repository` 에서 스프링 예외 추상화를 처리해준다.
정리
Querydsl 장점
Querydsl 덕분에 동적 쿼리를 매우 깔끔하게 사용할 수 있다.
List<Item> result = query
.select(item)
.from(item)
.where(likeItemName(itemName), maxPrice(maxPrice))
.fetch();
쿼리 문장에 오타가 있어도 컴파일 시점에 오류를 막을 수 있다.
메서드 추출을 통해서 코드를 재사용할 수 있다. 예를 들어 여기서 만든 likeItemName(itemName), maxPrice(maxPrice) 메서드를 다른 쿼리에서도 함께 사용할 수 있다.
Querydsl 을 사용해서 자바 코드로 쿼리를 작성하는 장점을 느끼고, 동적 쿼리 문제도 깔끔하게 해결하였다.
Querydsl 은 이 외에도 수 많은 편리한 기능을 제공한다.
예를 들어 최적의 쿼리 결과를 만들기 위해서 DTO 로 편리하게 조회하는 기능은 실무에서 자주 사용하는 기능이다.
JPA 를 사용한다면 스프링 데이터 JPA 와 Querydsl 은 실무의 다양한 문제를 편리하게 해결하기 위해 선택하는 기본 기술이라 생각한다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
1️⃣ Querydsl 설정
스프링 부트 3.x 설정
검증 - Q타입 생성 확인 방법
Gradle - Q 타입 생성 확인 방법
Gradle -> Tasks -> build -> cleanGradle -> Tasks -> other -> compileJavaQ 타입 생성 확인
build -> generated -> sources -> annotationProcessor -> java/main하위에hello.itemservice.domain.QItem생성 확인Q 타입 삭제
gradle clean을 수행하면build폴더 자체가 삭제된다. 별도의 설정은 없어도 된다.2️⃣ Querydsl 적용
공통
JPAQueryFactory가 필요하다.JPAQueryFactory는 JPA 쿼리인 JPQL 을 만들기 때문에EntityManager가 필요하다.JdbcTemplate을 설정하는 것과 유사하다.JPAQueryFactory를 스프링 빈으로 등록해서 사용해도된다.save(), update(), findById()
findAllOld
BooleanBuilder를 사용해서 원하는where조건들을 넣어주면 된다.findAll
앞서
findAllOld에서 작성한 코드를 깔끔하게 리팩토링 했다. 다음 코드는 누가 봐도 쉽게 이해할 수 있을 것이다.where(A,B)에 다양한 조건들을 직접 넣을 수 있는데, 이렇게 넣으면 AND 조건으로 처리된다. 참고로where()에null을 입력하면 해당 조건은 무시한다.likeItemName(),maxPrice()를 다른 쿼리를 작성할 때 재사용할 수 있다는 점이다. 쉽게 이야기해서 쿼리 조건을 부분적으로 모듈화할 수 있다. 자바 코드로 개발하기 때문에 얻을 수 있는 큰 장점이다.QuerydslConfig
ItemServiceApplication - 변경
Querydsl은 별도의 스프링 예외 추상화를 지원하지 않는다. 대신에 JPA에서 학습한 것처럼@Repository` 에서 스프링 예외 추상화를 처리해준다.정리
Querydsl 장점
Querydsl 덕분에 동적 쿼리를 매우 깔끔하게 사용할 수 있다.
likeItemName(itemName),maxPrice(maxPrice)메서드를 다른 쿼리에서도 함께 사용할 수 있다.Querydsl 을 사용해서 자바 코드로 쿼리를 작성하는 장점을 느끼고, 동적 쿼리 문제도 깔끔하게 해결하였다.
Querydsl 은 이 외에도 수 많은 편리한 기능을 제공한다.
예를 들어 최적의 쿼리 결과를 만들기 위해서 DTO 로 편리하게 조회하는 기능은 실무에서 자주 사용하는 기능이다.
JPA 를 사용한다면 스프링 데이터 JPA 와 Querydsl 은 실무의 다양한 문제를 편리하게 해결하기 위해 선택하는 기본 기술이라 생각한다.
All reactions