JPQL과 @Query

devfuturo·2022년 8월 4일
0

Spring

목록 보기
1/1
  • 조금 복잡한 쿼리나 연관관계에 기반한 JOIN 검색을 처리하기 위해 JPQL을 사용해야함
  • @Query(”JPQL구문”)

JPQL (Java Persistence Query Language) - 일반 SQL 문법과 다름

  • 엔티티를 기준으로 만듦
  • 검색 대상이 테이블이 아닌 영속성 컨텍스트에 등록된 엔티티다. 따라서 엔티티 클래스 이름을 사용 해 주어야 함
  • FROM절에 나오는 엔티티 클래스 이름 대소문자 정확히 사용 해 주어야 함
  • SELECT, WHERE 절에서 사용되는 변수이름 역시 대소문자 구분 해 주어야 함
@Query ("SELECT b FROM Board b WHERE b,title like %?1% ORDER BY b.seq DESC")
  • SELECT 절에서 * 표기를 할 수 없음

    • SELECT a1, a2, a3,a4 FROM A - 프로퍼티 모두 작성해야 함

  • 따라서 FROM 절에서 별칭을 주고 별칭을 사용하는 것 → *와 같은 의미

  • SELECT 절에는 모든 프로퍼티값 다 와야함. 일부 프로퍼티만 사용하는 것 불가능

SELECT a1, a4
FROM A

---- 위와 같은 구문 X , a1~ a4 모두 SELECT 가져와야 함

@Query
SELECT a1, a4
FROM A

public Object[] testAA();

네이티브 쿼리

  • 바인드 변수는 항상 ?1로 설정 해 주어야 함
  • @Query(value=”일반 SQL 구문(테이블,컬럼명 사용)” , nativeQuery=true)
    • nativeQuery=true로 줘야 일반 SQL문 사용 가능
  • JPQL보다 퍼포먼스가 떨어지긴 함

0개의 댓글