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 |