CS 잡지식
Querydsl 사용 템플릿
JIN_YOUNG _KIM
2023. 5. 17. 16:27
1. 먼저, 각강의 엔티티에 대해서 QType을 생성.
2. 아래 4가지 방법으로 기본적으로 Querydsl 사용 준비를 한다.
@SpringBootTest
@Transactional
public class QuerydslBasicTest {
@Autowired
EntityManager entityManager;
// 필드에서 선언!
JPAQueryFactory queryFactory;
@BeforeEach
void beforeEach(){
// 생성 메서드 같은 거을 따로 만들어서 초기화!
queryFactory = new JPAQueryFactory(entityManager);
//이하 생략
}
@Test // Querydsl 사용법 1]
void startQuerydslV1(){
// 여기서 JpAQueryFactory 생성하는 방법!
JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager);
QMember m = new QMember("m");
// JPQL과는 다르게, java 코드로 작성을 했다. -> 컴파일 타임 때, 오류를 알려 줌!!!(이 부분이 Querydsl의 막강한 장점)
Member member1 = queryFactory
.select(m)
.from(m)
.where(m.username.eq("member1")) //파라미터 바인딩 처리
.fetchOne();
assertThat(member1.getUsername()).isEqualTo("member1");
}
@Test// Querydsl 사용법 2]
void startQuerydslV2(){
QMember m = new QMember("m");
Member member1 = queryFactory
.select(m)
.from(m)
.where(m.username.eq("member1")) //파라미터 바인딩 처리
.fetchOne();
assertThat(member1.getUsername()).isEqualTo("member1");
}
@Test // Querydsl 사용법 3]
void startQuerydslV3(){
QMember m = QMember.member; // == QMember m = new QMember("mermber1")
Member member1 = queryFactory
.select(m)
.from(m)
.where(m.username.eq("member1")) //파라미터 바인딩 처리
.fetchOne();
assertThat(member1.getUsername()).isEqualTo("member1");
}
@Test // Querydsl 사용법 4] 가장 권장함
void startQuerydslV4() {
Member member1 = queryFactory
.select(QMember.member) // Static import로 더 깔끔히 가능
.from(QMember.member)
.where(QMember.member.username.eq("member1")) //파라미터 바인딩 처리
.fetchOne();
assertThat(member1.getUsername()).isEqualTo("member1");
}