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");
}
'CS 잡지식' 카테고리의 다른 글
Querydsl 사용 시, 주의해야 할 버그(newInstance, ExpressException..) (0) | 2023.05.19 |
---|---|
use_sql_comments: true (0) | 2023.05.17 |
EntityManager에 대한 동시성(concurrency) 문제 (0) | 2023.05.17 |
필드값에 대해서는 동시성 문제의 발생 유무를 꼭 확인하자! (0) | 2023.05.17 |
show_sql: true와 format_sql, 2개 중 하나만 사용하자! (0) | 2023.05.17 |