본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


JPA/QueryDSL

QueryDSL 공부 2 - Q-Type 활용

반응형

엔티티의 Q type을 생성하기 위해선 2가지 방법이 있다 

 

//생성자를 통해 생성
QMember m = new QMember("m");

//스테틱 변수를 활용
QMember m = QMember.member;

 

스테틱 변수를 활용할 수 있는 이유는 Q Type의 클래스에 들어가 보면 

 

아래 사진 처럼 자기 자신을 스테틱 변수로 저장하는 필드가 있기 때문이다 . 

 

QMember의 구성

QType 객체를 직접 생성해서 사용할 수도 있지만 static import를 통해 객체를 사용하면 코드를 훨씬 깔끔하게 만들 수 있다. 

 

    @Test
    public void QueryDSLTest(){
        
        Member member1 = qf
                .selectFrom(QMember.member)
                .where(QMember.member.username.eq("member1"))
                .fetchOne();

        assertEquals(member1.getUsername() , "member1");

    }

 

 

    @Test
    public void QueryDSLTest(){

       	//static import 적용
        
        Member member1 = qf
                .selectFrom(member)
                .where(member.username.eq("member1"))
                .fetchOne();

        assertEquals(member1.getUsername() , "member1");

    }

 

 

 

실행시에 Querydsl을 통해 생성되는 JPQL을 확인하고 싶다면  application.yml에  use_sql_comments:true로 설정해 주면 된다.  

 

spring:
  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        show_sql: true #띄어쓰기 8칸
        format_sql: true
        default_batch_fetch_size: 100
        use_sql_comments: true

 

아래 그림과 같이 /**/ 안에 JPQL 문이 나온다 .

 

 

 

반응형