카테고리 없음
[SprintBoot] Repository에 쿼리문 작성하기
Jenny Noh
2024. 3. 15. 13:05
JPQL 쿼리 작성 규칙 (@Query 어노테이션 사용 시)
- JPQL 쿼리 작성: @Query 어노테이션 안에 작성하는 쿼리는 JPQL 형식을 따라야 합니다. JPQL은 데이터베이스 테이블이 아닌 엔티티 객체를 기반으로 쿼리를 작성하는데, 이는 SQL의 테이블과 칼럼 대신에 엔티티와 속성을 사용한다는 것을 의미합니다.
- 엔티티 이름 사용: JPQL 쿼리에서는 엔티티 클래스의 이름을 사용하여 쿼리를 작성합니다. SQL에서는 테이블 이름을 사용하는 것과 달리, JPQL에서는 엔티티 클래스의 이름을 사용하여 쿼리를 작성합니다.
- 별칭(alias) 사용: 엔티티와 속성에 대한 별칭(alias)을 사용하여 쿼리를 작성할 수 있습니다. 별칭은 쿼리를 보다 간결하게 작성할 수 있도록 도와줍니다.
- 매개변수 바인딩: 쿼리 안에서 사용되는 매개변수는 : 기호를 사용하여 바인딩합니다. 이를 통해 동적으로 쿼리를 생성할 수 있습니다.
- Named Parameter 사용: @Query 어노테이션에서 매개변수를 사용할 때는 named parameter를 사용합니다. 이는 :매개변수명 형식으로 지정합니다.
- 오른쪽 JOIN 사용 시 Fetch 조인 사용: JPQL에서 오른쪽 조인을 사용할 때는 FetchType.EAGER를 사용한 Fetch 조인을 권장합니다.
- 주석 사용: 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);