JPQL과 Querydsl을 사용하다 보면 기본적인 CRUD는 반복적으로 작성해야 한다.
그 반복적인 과정을 피하기 위해 JpaRepository 인터페이스를 제공한다.
Repository 클래스를 따로 생성시키지 않고, JpaRepository 인터페이스를 상속받아서 JpaRepository에서 선언한 메소드들을 사용할 수 있게 된다.
거기에 더해서 JpaRepository에서 제공하는 메소드 외에 필요한 쿼리를 수행하기 위한 메소드를 직접 정의할 수도 있다.
public interface PostRepository extends JpaRepository<Post, Long> {...}
public interface [사용할 Repository 이름] extends JpaRepository< [사용할 엔티티], [ID] > {...}
주요 메소드는 아래 주소에 간단히 정리해 보았다.
이 방법 외에도 @Query 애노테이션을 사용하는 방법이 있다.
이 방법은 @Query(" ") 안에 쿼리를 직접 작성하는 방식이다.
기본 값으로 JPQL을 작성할 수 있지만, 속성 값 변경을 통해 SQL을 작성할 수도 있다.
만약 SQL을 사용하고 싶다면 "nativeQuery=true"를 추가하면 된다.
DB를 변경할 필요가 있다면 @Query 위에 @Modifying을 사용한다.
그리고 파라미터를 전달할 때는 @Param("[파라미터명]")을 함께 사용한다.
@Modifying
@Query("update Post p set p.count = p.count + 1 where p.id = :postId")
int updateHitById(@Param("postId") Long id);
//:[파라미터명] -> @Param("[파라미터명]")을 동일하게 사용해야 한다.
즉, Repository에 직접 EntityManager을 사용해서 만들던 것을 JpaRepository를 상속받으면서 작성할 코드가 줄어든다.
'백엔드 > JPA' 카테고리의 다른 글
[JPA] EntityManager와 EntityManagerFactory (0) | 2021.12.08 |
---|---|
JPQL을 Querydsl로 교체해보기 (0) | 2021.09.11 |
JPA 엔티티 매핑하기(@Entity) (0) | 2021.09.11 |
JPA(Java Persistence API)와 JPQL(Java Persistence Query Language) 간단 정리 (0) | 2021.09.11 |
JpaRepository의 주요 메소드를 이해해보자. (0) | 2021.09.09 |
최근댓글