QMember qMember = new QMember("m"); //별칭 직접 지정
QMember qMember = QMember.member; //기본 인스턴스 사용
생성된 QMember 클래스를 확인해보면,
static final QMember member 필드가 이미 만들어져있는 것을 확인 할 수 있다.
기본 인스턴스에서 알아서 "member1"이라는 별칭을 줘서 Qmember 인스턴스를 생성해뒀다.
강사님은 이 방법을 권장한다! 코드가 깔끔하기 때문!!
import static study.querydsl.entity.QMember.*; // static import QMember
// 권장하는 방법, 깔끔함
// 기본 인스턴스를 static import와 함께 사용
@Test
public void startQuerydsl2() {
// memeber1을 찾아라
Member findMember = queryFactory
.select(member)// QMember.member 에서 QMember static import하면 member라고 적을 수 있음.
.from(member)
.where(member.username.eq("member1"))
.fetchOne();
// 검증
assertThat(findMember.getUsername()).isEqualTo("member1");
}

spring.jpa.properties.hibernate.use_sql_comments: true

위와 같이 나온다! SQL 전에 주석 처리된 부분이 생성된 JPQL이다!
JPQL에서 Member 엔티티 별칭이 member1로 설정된 것을 확인할 수 있다.
왜냐면 Q파일에서 QMember 인스턴스 생성할 때 member1으로 별칭을 설정해줬기 때문이다
별칭을 별도로 m 으로 설정하면 JPQL에서도 별칭 m을 사용한다!
아래 사진은 별칭을 m으로 설정해 QMember 인스턴스를 생성했을 때의 JPQL이다.
참고
- 같은 테이블을 조인해야하는 경우에는 별칭을 직접 설정해줘야한다!
두개의 테이블을 구분해야하니까 별칭을 서로 다르게 부여해야한다.- 같은 테이블을 조인해야 하는 경우가 아니면 기본 인스턴스를 사용하자!