Engineering Note

[JPA] Spring Data JPA Query Method 네이밍 규칙 본문

Server/JPA ORM

[JPA] Spring Data JPA Query Method 네이밍 규칙

Software Engineer Kim 2025. 12. 23. 09:14

Spring Data JPA Query Method

- 메서드명으로 쿼리 자동 생성

 

1. 단순 필드 조회

Entity:

@Entity
public class Member {
    private Long id;
    private String email;  // 단순 필드
    private String name;
}

 

Repository

// email 필드로 조회
Optional<Member> findByEmail(String email);
// → SELECT * FROM member WHERE email = ?

// name 필드로 조회
List<Member> findByName(String name);
// → SELECT * FROM member WHERE name = ?

 

'findBy필드'로 쿼리메서드를 작성하면, SELECT * FROM Entity(Table) WHERE 필드 = ? 형태로 쿼리가 생성된다.

 

 

2. 연관관계 필드 조회

@Entity
public class RefreshToken {
    private Long id;
    private String token;
    
    @ManyToOne
    @JoinColumn(name = "member_id")
    private Member member;  // ← 연관관계 필드
}

@Entity
public class Member {
    private Long id;  // ← Member의 id 필드
    private String email;
}

 

RefreshToken에서 Member의 id로 token을 조회하고 싶으면 단순 필드 조회처럼 쿼리메서드를 작성하면 안되고, 

findByMember_id(Long memberId); 라고 작성해야 한다. 이유는 RefreshToken 객체에 'memberId' 라는 필드가 없기 때문이다.

 

//RefreshTokenRepository

// token 정보 memberId 필드로 조회
List<RefreshToken> findByMember_id(Long memberId);
// → SELECT * FROM Refreshtoken WHERE member_id = ?

 

`_` (언더스코어)는 연관 엔티티 내부 필드로 들어가는 것을 의미

Comments