[JPA] Query Method & JPQL

Query Method란?

아래 표에 나와있는 키워드들을 사용해서 네이밍 규칙을 적용하면 간단하게 쿼리를 실행할 수 있다.

Query Method 예시

ex) 만료기간이 지나지 않은 User의 refresh 토큰을 조회하는 쿼리 메소드 

RefreshTokenEntity findRefreshTokenEntityByUserIdAndValidityAfter(Long userId, Date expiration_time);

ex) 유저 테이블에서 친구들의 아이디로 친구 정보 조회

List<UserEntity> findAllByUserIdIn(List<Long> friendIds);

 

 

JPQL이란? 

테이블이 아닌 엔티티 객체를 조회하는 객체지향 쿼리다.

JPA에서 기본으로 제공하는 메소드와 쿼리 메소드를 이용해도 update처럼 불편한 쿼리들이 있다.

조금 더 정밀한 쿼리를 사용하기 위해 사용한다.

 

JPQL 예시

ex) 특정 유저의 캐릭터 이름을 업데이트 하는 쿼리 JPQL

@Modifying
@Query("UPDATE USER_TB u SET u.characterName = ?1 WHERE u.userId = ?2")
void updateCharacterName(String name, Long id);

 

  • Table 명 뒤에 별칭을 붙여주고 변수 앞에 별칭을 붙여준다.
  • JPQL은 엔티티 객체를 대상으로 쿼리를 실행한다

아래의 UserEntity class를 보면 Column명은 USER_PK이지만 JPQL에서는 변수 명인 userId를 사용하는 것을 볼 수 있다.

@Entity(name="USER_TB")
@Data
public class UserEntity {
    @Id
    @Column(name = "USER_PK")
    private long userId;    //kakao user id

    @Column(name = "THUMBNAIL_IMAGE_URL")
    private String thumbnail_image_url;

    @Column(name = "CHARACTER_NM")
    private String characterName;
    @Column(name = "EXPERIENCE_VALUE")
    private int experienceValue;
    @Column(name = "CHARACTER_IMAGE_URL")
    private String character_url;
}

'개발 > Spring' 카테고리의 다른 글

[Spring] IoC & DI  (0) 2023.05.24
빌드와 컴파일의 차이  (0) 2023.04.25
[JSP] Cookie와 Session  (0) 2023.04.18
REST Docs와 Swagger ui  (0) 2023.04.11
Java MVC 패턴을 이용한 간단한 미니 쿠팡 만들기  (0) 2023.04.04