서비스 기획자의 성장기록

[SprintBoot] Repository에 쿼리문 작성하기 본문

카테고리 없음

[SprintBoot] Repository에 쿼리문 작성하기

Jenny Noh 2024. 3. 15. 13:05

JPQL 쿼리 작성 규칙 (@Query 어노테이션 사용 시)

  1. JPQL 쿼리 작성: @Query 어노테이션 안에 작성하는 쿼리는 JPQL 형식을 따라야 합니다. JPQL은 데이터베이스 테이블이 아닌 엔티티 객체를 기반으로 쿼리를 작성하는데, 이는 SQL의 테이블과 칼럼 대신에 엔티티와 속성을 사용한다는 것을 의미합니다.
  2. 엔티티 이름 사용: JPQL 쿼리에서는 엔티티 클래스의 이름을 사용하여 쿼리를 작성합니다. SQL에서는 테이블 이름을 사용하는 것과 달리, JPQL에서는 엔티티 클래스의 이름을 사용하여 쿼리를 작성합니다.
  3. 별칭(alias) 사용: 엔티티와 속성에 대한 별칭(alias)을 사용하여 쿼리를 작성할 수 있습니다. 별칭은 쿼리를 보다 간결하게 작성할 수 있도록 도와줍니다.
  4. 매개변수 바인딩: 쿼리 안에서 사용되는 매개변수는 : 기호를 사용하여 바인딩합니다. 이를 통해 동적으로 쿼리를 생성할 수 있습니다.
  5. Named Parameter 사용: @Query 어노테이션에서 매개변수를 사용할 때는 named parameter를 사용합니다. 이는 :매개변수명 형식으로 지정합니다.
  6. 오른쪽 JOIN 사용 시 Fetch 조인 사용: JPQL에서 오른쪽 조인을 사용할 때는 FetchType.EAGER를 사용한 Fetch 조인을 권장합니다.
  7. 주석 사용: JPQL 쿼리 내에서 SQL과 마찬가지로 주석을 사용할 수 있습니다. 주석은 --나 /* */ 형식으로 사용할 수 있습니다.

 

 

예시

@Query("SELECT b FROM BoardEntity b WHERE b.boardTitle LIKE %:keyword% OR b.boardContent LIKE %:keyword% OR b.boardWriter LIKE %:keyword%")
List<BoardEntity> findByAllContaining(@Param("keyword") String searchKeyword);

	
@Query("SELECT b FROM BoardEntity b WHERE b.boardTitle LIKE %:keyword% OR b.boardContent LIKE %:keyword%")
List<BoardEntity> findByTitleContentContaining(@Param("keyword") String searchKeyword);