We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Querydsl에서 DTO를 생성하는 세 가지 방법, QueryProjection, Projections.constructor, Projections.fields의 특징과 차이점을 비교하여 정리합니다.
@QueryProjection 애노테이션을 사용하여 DTO 클래스에 대해 Querydsl의 Q클래스를 생성하고, 이를 통해 DTO 객체를 생성하는 방식입니다. 생성된 QDto 클래스를 사용하여 데이터를 매핑합니다.
@Data @QueryProjection public class MyDto { private String name; private int age; } List<MyDto> result = queryFactory .select(new QMyDto(member.name, member.age)) .from(member) .fetch();
DTO의 생성자를 호출하여 데이터를 매핑하는 방식입니다.
Querydsl에 종속되지 않아 재사용성이 높습니다. 설정이 간단하며 순수 POJO 설계가 가능합니다.
필드 개수나 타입이 맞지 않을 경우 런타임 오류가 발생할 수 있습니다. 생성자 매핑이 복잡해질 수 있습니다.
public class MyDto { private String name; private int age; public MyDto(String name, int age) { this.name = name; this.age = age; } } List<MyDto> result = queryFactory .select(Projections.constructor(MyDto.class, member.name, member.age)) .from(member) .fetch();
DTO의 필드 이름을 기준으로 데이터를 매핑하는 방식입니다.
Querydsl 의존성이 없으며, 필드 이름이 같을 경우 간단히 매핑할 수 있습니다. 일부 필드만 매핑할 수 있습니다.
DTO에 기본 생성자와 Setter가 필요합니다. 필드 이름이 다를 경우 명시적으로 매핑해야 합니다.
public class MyDto { private String name; private int age; public MyDto() {} public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } } List<MyDto> result = queryFactory .select(Projections.fields(MyDto.class, member.name.as("name"), member.age.as("age"))) .from(member) .fetch();
The text was updated successfully, but these errors were encountered:
No branches or pull requests
QueryProjection vs Projections.constructor vs Projections.fields 비교 정리
Querydsl에서 DTO를 생성하는 세 가지 방법, QueryProjection, Projections.constructor, Projections.fields의 특징과 차이점을 비교하여 정리합니다.
1. QueryProjection
@QueryProjection 애노테이션을 사용하여 DTO 클래스에 대해 Querydsl의 Q클래스를 생성하고, 이를 통해 DTO 객체를 생성하는 방식입니다. 생성된 QDto 클래스를 사용하여 데이터를 매핑합니다.
특징
장점
단점
코드 예제
2. Projections.constructor
DTO의 생성자를 호출하여 데이터를 매핑하는 방식입니다.
특징
장점
Querydsl에 종속되지 않아 재사용성이 높습니다.
설정이 간단하며 순수 POJO 설계가 가능합니다.
단점
필드 개수나 타입이 맞지 않을 경우 런타임 오류가 발생할 수 있습니다.
생성자 매핑이 복잡해질 수 있습니다.
코드 예제
3. Projections.fields
DTO의 필드 이름을 기준으로 데이터를 매핑하는 방식입니다.
특징
장점
Querydsl 의존성이 없으며, 필드 이름이 같을 경우 간단히 매핑할 수 있습니다.
일부 필드만 매핑할 수 있습니다.
단점
DTO에 기본 생성자와 Setter가 필요합니다.
필드 이름이 다를 경우 명시적으로 매핑해야 합니다.
코드 예제
The text was updated successfully, but these errors were encountered: