티스토리 뷰
반응형
이번 글에서는 QueryDSL 을 사용하기 위해 매번 CustomRepositoryImpl이 번거로워 테스트 클래스에서 사용하는 방법을 보여드리고, 거기에서 잘 수행되는지 확인해볼까 합니다.
가장 먼저 테스트 클래스를 만들어야겠죠. 테스트 클래스를 생성합니다.
QueryDSLTest.java
@SpringBootTest
@Transactional(realOnly = true)
public class QueryDSLTest {
@Autowired // 원래는 @PersistenceContext 을 많이 썼는데, 이제는 오토와이어도 잘됩니다.
private EntityManager em;
@BeforeEach // 기본적으로 테스트가 시작하기 전에 실행하는 함수
void createTest() {
}
@Test // 실제 테스트 함수
void entityManagerTest() {
}
}
그리고 아래에 테스트 클래스에서 쓸 EntityManager 가 잘 작동하는지 체크합니다.
@SpringBootTest
@Transactional(realOnly = true)
public class QueryDSLTest {
@Autowired // 원래는 @PersistenceContext 을 많이 썼는데, 이제는 오토와이어도 잘됩니다.
private EntityManager em;
@BeforeEach // 기본적으로 테스트가 시작하기 전에 실행하는 함수
void createTest() {
}
@Test // 실제 테스트 함수
void jpqlTest() {
List<Member> members = em.createQuery("select m from Member m", Member.class)
.fetch();
assertThat(members.size() > 0).isTrue();
}
}
JPAQueryFactory 추가하기
이번에는 QueryDSL을 사용하기 위한 내용을 추가해보겠습니다.
@SpringBootTest
@Transactional(realOnly = true)
public class QueryDSLTest {
@Autowired // 원래는 @PersistenceContext 을 많이 썼는데, 이제는 오토와이어도 잘됩니다.
private EntityManager em;
private JPAQueryFactory queryFactory;
@BeforeEach // 기본적으로 테스트가 시작하기 전에 실행하는 함수
void createTest() {
queryFactory = new JPAQueryFactory(em);
}
@Test // 실제 테스트 함수
void jpqlTest() {
List<Member> members = em.createQuery("select m from Member m", Member.class)
.fetch();
assertThat(members.size() > 0).isTrue();
}
@Test // QueryDSL Test
void useQueryDSLTest() {
QMember member = new QMember("m1");
List<Member> members = queryFactory.select(member)
.from(member)
.fetch();
assertThat(members.size() > 0).isTrue();
}
}
JPAQueryFactory 직접 접근하기
아래처럼 사용 가능합니다.
@SpringBootTest
@Transactional(realOnly = true)
public class QueryDSLTest {
@Autowired
private JPAQueryFactory queryFactory;
@Test // QueryDSL Test
void useQueryDSLTest() {
QMember member = new QMember("m1");
List<Member> members = queryFactory.select(member)
.from(member)
.fetch();
assertThat(members.size() > 0).isTrue();
}
}
대신 위와같이 사용하기 위해서는 Bean 등록을 하여야 하므로 저의 경우 보통 Config 파일을 생성해줍니다.
@Configuration
@EnableJpaAuditing
public class JPAConfig {
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory queryFactory() {
return new JPAQueryFactory(entityManager);
}
}
반응형
'Server' 카테고리의 다른 글
[Java] 소수점 처리하기 (0) | 2022.09.26 |
---|---|
Shell 파일에서 *.jar 파일 백그라운드 실행 (0) | 2022.09.21 |
Firebase Push 와 관련된 적용사항 (0) | 2022.09.19 |
Java Stream 을 활용한 Sum/Avg/Min/Max 구하기 (0) | 2022.09.11 |
[Java] QueryDSL 쿼리 로그 심플하게 출력하기 (0) | 2022.09.11 |
[Java] Random 활용하는 2가지 꿀팁 (0) | 2022.09.08 |
댓글
공지사항