728x90
📌 스프링 부트 + 스프링 데이터 JPA의 한계점
➥ 복잡한쿼리, 동적쿼리를 해결하지 못한다
📌 Querydsl
- 자바언어의 한계를 넘어서 쿼리를 자바 코드로 작성하여 문법 오류를 컴파일 시점에 잡을 수 있다
- 동적 쿼리 문제를 해결할 수 있다
- 쉬운 SQL 스타일의 문법이라 복잡한 쿼리도 쉽게 작성할 수 있다
💻 예시 ( JPQL vs Querydsl)
@Test
public void jpal() {
String username = "kim";
String query = "select m from Member m" + //error
"where m.username = :username";
List<Member> result = em.createQuery(query, Member.class)
.getResultList();
}
- 런타임을 실행해 봐야지 에러사항을 알 수 있다
- 문법오류를 찾기 힘들다
- error ➱ "select m from Member m " : m뒤에 공백 필요
@Test
public void querydsl() {
String username = "kim";
List<Member> result = queryFactory
.select(member)
.from(member)
.where(member.username.eq(username))
.fetch();
}
- 쿼리를 자바코드로 작성하기 때문에 띄어쓰기나 문법오류가 없다
- 자바 컴파일러가 오류를 잡아주기 때문에 런타임을 실행하기 전에 에러를 잡을 수 있다
- 자바코드기 때문에 자동완성의 도움을 받을 수 있다
@Test
public void querydsl() {
String username = "kim";
List<Member> result = queryFactory
.select(member)
.from(member)
.where(usernameEq(username))
.fetch();
}
private BooleanExpression usernameEq(String username) {
return member.username.eq(username);
}
+) 메서드를 뽑을 수 있기때문에 다른 곳에서도 재사용이 가능하다
✍ 스프링 데이터 JPA + Querydsl
- 단순 반복작업의 코드들이 확연히 줄어들고 개발자는 핵심 비지니스로직을 개발하는데 집중 할 수 있다
- 쿼리를 작성하는 것을 자바코드로 하기때문에 더 즐겁게 할 수 있다
728x90
'🎯 etc > Query' 카테고리의 다른 글
[ Oracle ] 반경 내 위도 경도 쿼리 SQL (0) | 2022.11.21 |
---|
댓글