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 |
---|
댓글