Querydsl - jpql 비교

Seongjin Jo·2022년 12월 28일
0

Querydsl

목록 보기
2/8

✔ Querydsl


JPQL 을 만들어주는 builder 이다. 최종적으로는 JPQL 로 변환된다. 즉, 코드로 JPQL 을 작성할 수 있으며, 코드 작성 단계에서 문법적 에러를 확인할 수 있다.

@BeforeEach
    public void before(){
        Team teamA = new Team("teamA");
        Team teamB = new Team("teamB");
        em.persist(teamA);
        em.persist(teamB);

        Member member1 = new Member("member1",10,teamA);
        Member member2 = new Member("member2",20,teamA);
        Member member3 = new Member("member3",30,teamB);
        Member member4 = new Member("member4",40,teamB);

        em.persist(member1);
        em.persist(member2);
        em.persist(member3);
        em.persist(member4);
    }

우선 @BeforeEach로 임의의 데이터를 영송석 컨텍스트에 저장해둔다.
username이 'member1'인 것을 찾아보자.

✔ jpql


 @Test
    public void startJPQL(){
        //member1을 찾아라.
        Member findMember = em.createQuery("select m from Member m where m.username =:username", Member.class)
                .setParameter("username","member1")
                .getSingleResult();

        assertThat(findMember.getUsername()).isEqualTo("member1");
    }

✔ querydsl


@Test
    public void startQuerydsl(){
        JPAQueryFactory queryFactory = new JPAQueryFactory(em);
        Member findMember = queryFactory
                .select(member)
                .from(member)
                .where(member.username.eq("member1")) //파라미터 바인딩 처리
                .fetchOne();

        assertThat(findMember.getUsername()).isEqualTo("member1");
    }

1.파라미터 바인딩 자동으로 잡아준다.
2.jpql은 문자로 작성되지만, querydsl은 컴파일 시점에 문법오류를 잡아주고 코드어시스턴스도 사용가능
3.static import 처리 해서 사용가능 -> 원래는 Qmember.member인데 member로 사용

0개의 댓글