노빠꾸 개발일지/SPRING

[Spring Data JPA] 쿼리 메소드(Query Method) 방식 알아보기

No Backing 2023. 6. 14. 23:42
반응형

👉 Spring Data Jpa 쿼리메소드 @Query 어노테이션 이용 방식

 

2023.06.15 - [노빠꾸 개발일지/SPRING] - [Spring Data JPA] 쿼리 메소드 @Query 어노테이션 JPQL 쿼리

 

[Spring Data JPA] 쿼리 메소드 @Query 어노테이션 JPQL 쿼리

이번 피드에서는 쿼리메소드 방식에서 @Query 어노테이션을 이용한 JPQL쿼리를 알아보겠습니다. @Query 어노테이션을 이용한 JPQL 쿼리 @Query 어노테이션을 이용하여 JPQL쿼리를 하는 방법 예제) MemberEn

nobacking.tistory.com

 

이번 피드에서는 Spring Data JPA 쿼리 메소드에 대해 간단히 정리해 보겠습니다.

 

 메소드 이름으로 쿼리 

메소드 이름으로 JPQL 쿼리를 실행하는 방법

 

예제) 

 

MemberEntity.java

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class MemberEntity {
    @Id
    @GeneratedValue
    @Column(name = "user_no")
    private Long userNo;
    @Column(name = "user_name")
    private String userName;
    @Column(name = "user_addr")
    private String userAddr;
}

 

MemberRepository.java

public interface MemberRepository extends JpaRepository<MemberEntity, Long> {

    List<MemberEntity> findByUserName(String userName);

    Long countByUserAddr(String userAddr);

    List<MemberEntity> findDistinctByUserName(String userName);

    List<MemberEntity> findTopByUserName(String userName);

}

 

1. 조회 기능 : findBy...

    List<MemberEntity> findByUserName(String userName);

 

2. 카운트 조회 기능 : countBy...

    Long countByUserAddr(String userAddr);

3. 중복제거 조회 기능 : findDistinctBy...

    List<MemberEntity> findDistinctByUserName(String userName);

 

4. Limit 조회 기능 : findFirst ..., findFirst3... , findTop..., findTop3...(숫자를 붙이면 해당 개수만큼 조회됨)

    List<MemberEntity> findTopByUserName(String userName);

 

 

주로 사용되는 대표적인 기능 몇개를 정리해 보았는데, Spring Data JPA에서는 이외에도 많은 기능들을 제공하고 있다.

 

아래의 공식문서에서 참고하면 된다.

 

Spring 공식 문서 참고 URL

 

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation

 

Spring Data JPA - Reference Documentation

Example 121. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del

docs.spring.io

반응형