querydsl

· JPA
Spring Data JPA는 org.springframework.data.jpa.domain.Specification 클래스로 다양한 검색조건을을 조립해서 새로운 검색조건을 만들 수 있다. 본래에 JpaRepository 상속받을때 JpaSpecificationExecutor을 상속받으면 된다. public interface JpaSpecificationExecutor { T findOn(Specification spec); List findAll(Specification spec); Page findAll(Specification spec, Pageable pagaable); List findAll(Specification spec, Sort sort); long count(Specification ..
· JPA
사이드 프로젝트 진행 중에 JPA의 N+1 문제가 발생하였다. 매장 목록 조회 시 매장에 등록된 해쉬태그를 가져오기 위해 일대다 관계를 맺고 있는데 이것 때문에 데이터당 한번씩 더 조회가 되고 있었다. @ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.REMOVE }) @JoinTable(name = "tag_of_store", joinColumns = @JoinColumn(name = "store_id"), inverseJoinColumns = @JoinColumn(name = "store_tag_id")) private Set tags; 지금은 데이터가 적어서 문제가 안되지만 데이터 100개를 조회한다면 ..
· JPA
JPA를 사용하면 EntityManager.find(), 객체 그래프 탐색(member.getTeam())과 같은 기능만으로 개발하기는 어렵다. 그리고 데이터베이스 테이블이 아닌 엔티티 객체를 대상으로 개발하므로 엔티티 객체를 대상으로 하는 방법이 필요하다. JPA는 복잡한 검색 조건을 사용해서 엔티티 객체를 조회할 수 있는 다양한 쿼리 기술을 지원한다. JPQL(Java Persistence Query Language) Criteria 쿼리(Criteria Query) : JPQL을 편하게 작성하도록 도와주는 API, 빌더 클래스 모음 네이티브 SQL(Native SQL) : JPA에서 JPQL 대신 직접 SQL을 사용할 수 있다. QueryDSL : Criteria 쿼리처럼 JPQL을 편하게 작성하도..
· Spring
Querydsl이란? Querydsl 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해 주는 프레임워크 문자열로 작성하거나 XML 파일에 쿼리를 작성하는 대신, Querydsl이 제공하는 플루언트(Fluent) API를 이용해서 쿼리를 생성할 수 있다. 단순 문자열과 비교해서 Fluent API를 사용할 때의 장점은 다음과 같다. Fluent API의 장점 IDE의 코드 자동 완성 기능 사용 문법적으로 잘못된 쿼리를 허용하지 않음 도메인 타입과 프로퍼티를 안전하게 참조할 수 있음 도메인 타입의 리팩토링을 더 잘 할 수 있음 Repository 구현 Querydsl을 사용하는 Repository를 구현할 때 JpaRepository와 함께 상속 해 하나의 Repository에서 JPA 와 Q..
beekei
'querydsl' 태그의 글 목록