2-2. Spring Data JPA

khs·2022년 6월 23일
0

쿼리 메소드

  • 쿼리 메소드는 스프링데이터 JPA에서 제공하는 핵심 기능 중 하나로 Repository 인터페이스에 간단한 네이밍을 이용하여 메소드를 작성하면 원하는 쿼리를 실행할 수 있다. 공식문서를 확인하면 더 많은 예시를 확인할 수 있다.
    ex) find + (엔티티 이름) + By + 변수이름

@Query 어노테이션

  • 한두 개 정도의 조건을 이용해서 상품 데이터를 조회한다면 쿼리 메소드를 사용하면 되지만 조건이 많아진다면 쿼리 메소드의 이름이 매우 길어지게 된다. 그럴 경우 오히려 그 메소드가 어떻게 동작하는지 파악하기 쉽지 않다. 따라서 복잡한 쿼리를 다루기 위해 @Query를 사용한다.

  • Spring Data JPA에서 제공하는 @Query 어노테이션을 이용하면 SQL과 유사한 JPQL이라는 객체지향 쿼리 언어를 통해 복잡한 쿼리도 처리가 가능하다. JPQL은 엔티티 객체를 대상으로 쿼리를 수행한다.

  • 만약 기존의 데이터베이스에서 사용하던 쿼리를 그대로 사용해야 할 때는 @Query의 nativeQuery 속성을 사용하면 된다. 하지만 특정 데이터베이스에 종속되는 쿼리문을 사용하는 것이기 때문에 데이터베이스에 대해 독립적이라는 장점을 잃어버리게 된다.


Querydsl

  • @Query 어노테이션을 이용한 방법에서의 단점 : @Query 어노테이션 안에서 JPQL문법으로 문자열을 입력하기 때문에 잘못 입력하면 컴파일 시점에 에러를 발견할 수 없음 -> 이를 보완하기 위해 Querydsl 사용

  • Querydsl 장점

    • 고정된 SQL문이 아닌 조건에 맞게 동적으로 쿼리를 생성할 수 있다.
    • 비슷한 쿼리를 재사용할 수 있으며 제약 조건 조립 및 가독성을 향상 시킬 수 있다.
    • 문자열이 아닌 자바 소스코드로 작성하기 때문에 컴파일 시점에 오류를 발견할 수 있다.
    • IDE의 도움을 받아서 자동 완성 기능을 이용할 수 있기 때문에 생산성을 향상 시킬 수 있다.
profile
권혁상입니다. 행복코딩^_^

0개의 댓글