Querydsl 추가기능

JIWOO YUN·2024년 3월 28일
0

Querydsl

목록 보기
7/7
  • 기본적으로 이 곳에서 설명하는 기능들은 실무에서는 사용하기 어렵다고한다.
    • 제약이 크기 때문에

QuerydslPredicateExecutor 인터페이스 지원

  1. 간단한 곳에서는 사용이 가능
  2. 조인이 불가능
  3. 클라이언트가 Querydsl에 의존해야함.
    1. Repositry를 만드는 이유 -> 하부의 기술들을 숨기기위해서 존재함
      1. 근데 이걸 사용하면 Service부분과 Controller 부분이 만들어서 넘겨야되서 의존하게 되어 만약 변경을 할때 전부 영향을 주게되는 문제가 생긴다.
    2. 순수한 자바객체가 아닌 Querydsl 객체가 넘어가게된다.
@Test
public void querydslPredicateExecutor(){

    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);


    QMember member = QMember.member;
    //querydslPredicateExecutor사용
    Iterable<Member> result = memberRepository.findAll(member.age.between(10, 40)
            .and(member.username.eq("member1"))
    );
    for (Member findMember : result) {
        System.out.println("member1= "+ findMember);
    }
}

Querydsl Web

Spring Data JPA - Reference Documentation

  • 단순한 조건만 가능하다
    • eq, contain, in 사용가능
    • 사실상 eq만 사용되는 정도
  • 조건을 커스텀하는 기능이 복잡하고 명시적이지 않다
  • 컨트롤러가 Querydsl에 의존

굳이 사용할 필요가 없다.

리포지토리 지원 -QuerydslRepositorySupport

  • Querydsl 3.x 버전을 대상으로 만듬
    • 4.x 버전에 나온 JPAQueryFactory로 시작 불가능
      • select 시작 불가( from으로 시작해야한다.)
  • QueryFactory 제공 X
  • 스프링 데이터 sort 기능이 정상 작동하지 않는다.
profile
열심히하자

0개의 댓글