Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

리포지토리 지원 - QuerydslRepositorySupport 본문

인프런/[인프런] QueryDsl

리포지토리 지원 - QuerydslRepositorySupport

Seung__ 2021. 9. 5. 23:17

1. QuerydslRepositorySupport 


  • EntityManager 주입해줌.
  • Querdsl 유틸리티 클래스 : Helper instance to ease access to Querydsl JPA query API.
  • from절부터 시작 가능.
@Repository
public abstract class QuerydslRepositorySupport {

	private final PathBuilder<?> builder;

	private @Nullable EntityManager entityManager;
	private @Nullable Querydsl querydsl;

 

 

2. from절부터 시작


  • 바로 from부터 시작. select를 마지막에
        //from절부터 시작.
        List<MemberTeamDto> result = from(member)
                .leftJoin(member.team, team)
                .where(
                        usernameEq(condition.getUsername()),
                        teamNameEq(condition.getTeamName()),
                        ageGoe(condition.getAgeGoe()),
                        ageLoe(condition.getAgeLoe()))
                .select(new QMemberTeamDto(
                        member.id.as("memberId"),
                        member.username,
                        member.age,
                        team.id.as("teamId"),
                        team.name.as("teamName")))
                .fetch();

 

3. Paging처리 쉬워짐.


  • getQuerydsl().applyPagingnation(pageable, query)를 실행하면
  • 해당 메서드에서 offset, limit 넣어줌 ㅋㅋ 편리함. 흠.. 이게 다임.
    @Override
    public Page<MemberTeamDto> searchPageSimple2(MemberSearchCondition condition, Pageable pageable) {

        JPQLQuery<MemberTeamDto> jpaQuery = from(member)
                .leftJoin(member.team, team)
                .where(
                        usernameEq(condition.getUsername()),
                        teamNameEq(condition.getTeamName()),
                        ageGoe(condition.getAgeGoe()),
                        ageLoe(condition.getAgeLoe()))
                .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);//offset, limit 넣어줌.
        query.fetchResults();

 

 

 

4. 단점


  • Querydsl 3.x 버전을 대상으로 만듬
  • Querydsl 4.x에 나온 JPAQueryFactory로 시작할 수 없음
  • select로 시작할 수 없음 (from으로 시작해야함)
  • QueryFactory 를 제공하지 않음
  • 스프링 데이터 Sort 기능이 정상 동작하지 않음
  • 흠.........
Comments