QuerydslRepositorySupport 라는 구현체가 있다.

커스텀 repository에서 이를 상속 받아서 쓰면 몇가지 재밌는 기능을 제공 받을 수 있다.

//	private final JPAQueryFactory queryFactory;
//
//	public MemberRepositoryImpl(EntityManager em) {
//		this.queryFactory = new JPAQueryFactory(em);
//	}

public MemberRepositoryImpl() {
	super(Member.class);
}

@Override
public List<MemberTeamDto> search(MemberSearchCondition condition) {

	List<MemberTeamDto> result = from(member)
			.leftJoin(member.team, team)
			.where(
					usernameEq(condition.getUsername()),
					teamNameEq(condition.getTeamName()),
					ageBetween(condition.getAgeLoe(), condition.getAgeGoe())
			)
			.select(new QMemberTeamDto(
					member.id.as("memberId"),
					member.username,
					member.age,
					team.id.as("teamId"),
					team.name.as("teamName")
			))
			.fetch();

페이징을 조금 쉽게 해준다.

JPQLQuery<MemberTeamDto> jpaQuery = from(member)
		.leftJoin(member.team, team)
		.where(
				usernameEq(condition.getUsername()),
				teamNameEq(condition.getTeamName()),
				ageBetween(condition.getAgeLoe(), condition.getAgeGoe())
		)
		.select(new QMemberTeamDto(
				member.id.as("memberId"),
				member.username,
				member.age,
				team.id.as("teamId"),
				team.name.as("teamName")
		));

JPQLQuery<MemberTeamDto> query = getQuerydsl().applyPagination(pageable, jpaQuery);
query.fetchResults();

장점

단점