목록Spring/Querydsl (4)
Hansel

프로젝션 프로젝션은 데이터베이스의 관계대수에 나오는 개념이다. 실렉션은 수평적이고 프로젝션은 수직적이다. 다시말해 애트리뷰트의 부분 집합을 반환한다. 하나의 엔티티에서 프로젝션을 하더라도 다양한 타입의 결과가 반환될 수 있다. 사용법은 단순히 select절에 원하는 애트리뷰트를 기입하면 된다. 현재는 username만 가져오기 때문에 String만 반환하지만 만약 타입이 다른 다양한 값이 추가된다면, 그땐 튜플로 반환하게 된다. 튜플은 쿼리Dsl에서 사용하는 클래스로 이전에 언급했다. 2개 이상의 애트리뷰트를 프로젝션 연산하니 Tuple로 반환한다. DTO 반환하기 쿼리DSl 이전에는 DTO를 생성하기 위해 데이터의 집합을 가져와 내부 stream을 돌리거나, new 오퍼레이션을 사용해 DTO를 반환했다..

조인 SQL에서 가장 중요한 개념 중 하나이다. select와 from을 명시하는 것은 동일하고 그 후에 join 메서드를 사용해 조인한다. 조인 대상이 되는 테이블의 연관 엔티티와 연관 엔티티를 파라미터로 보내면 된다. On 절을 이용한 조인도 같은 방식으로 사용할 수 있다. 연관관계가 없는 조인 위에 연관관계가 있는 조인과의 차이점은 join 메서드 파라미터에 하나의 인자만 들어간다는 점이다. join()파라미터 안에 두 엔티티가 들어가는 것은 pk, fk를 기준으로 조인하는 것이다. 하지만 연관관계가 없는 엔티티는 pk, fk 매핑이 안되어 있으니 하나의 엔티티만 들어간다. 페치조인 JPA의 꽃 페치조인이다. 조인 방법은 동일하며, 조인 메서드 이후에 .fetchJoin 메서드를 추가해 사용한다. ..

Jpql과의 차이 작성하는 쿼리 자체는 매우 유사하다. 조건식의 경우 스프링 데이터 JPA의 쿼리메서드 작성 방식과 유사하다는 느낌이 들었다. Q클래스 사용 첫 라인과 같이 직접 변수로 선언하여 사용하거나, 두번째 라인과 같이 정적 변수를 사용하는 방법이 있다. 첫번째 방법과 같이 alias를 사용하는 방식은 셀프조인이 필요한 경우 사용된다. 조건절 http://querydsl.com/static/querydsl/4.1.0/apidocs/com/querydsl/core/types/dsl/Expressions.html Expressions (Querydsl 4.1.0 API) querydsl.com 위 링크에서 레퍼런스를 참고할 수 있다. 조건절에 사용되는 메서드는 NumberExperssion, Bool..

이전에 프로젝트를 진행하다 동적 쿼리를 유연하게 처리하지 못해 각 상황에 맞는 쿼리를 작성하여 처리한 경험이 있었다. 해당 문제를 해결하고 비슷한 문제를 겪지 않도록 Querydsl을 학습하려 한다. 추가 추가하는 방법은 간단하다. Gradle 기준으로 Build.gradle에 의존성을 추가해주면 된다. implementation 'com.querydsl:querydsl-jpa' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annot..