JPA 반환타입
by 볼빵빵오춘기JPA 주요 반환 타입
List<T>
특정 조건에 맞는 여러 개의 엔티티를 조회할 때 사용다.
List<User> findByLastName(String lastName);
Optional<T>
특정 조건에 맞는 하나의 엔티티를 조회할 때 사용되며, 결과가 없을 경우 Optional.empty()를 반환한다.
Optional<User> findByEmail(String email);
Page<T>
페이징 처리가 된 결과를 반환할 때 사용된다.
Pageable 파라미터를 함께 사용한다.
Page<User> findByLastName(String lastName, Pageable pageable);
Slice<T>
페이징 처리를 하되, 전체 페이지 수를 고려하지 않고 다음 페이지가 있는지 여부만 확인할 때 사용된다.
Slice<User> findByLastName(String lastName, Pageable pageable);
Stream<T>
스트림으로 결과를 처리할 때 사용된다.
자원을 적절히 관리하기 위해 트랜잭션 내에서 사용해야 된다.
@Query("select u from User u")
Stream<User> findAllByCustomQueryAndStream();
Iterable<T>
결과를 반복할 수 있는 컬렉션 타입으로 반환할 때 사용된다.
Iterable<User> findAll();
Set<T>
중복을 허용하지 않는 컬렉션 타입으로 반환할 때 사용된다.
Set<User> findDistinctByLastName(String lastName);
T
단일 엔티티를 반환할 때 사용된다.
결과가 없거나 여러 개일 경우 예외가 발생할 수 있다.
User findById(long id);
Map<K, V>
JPA 자체에서 지원하지는 않지만, 특정 쿼리 결과를 맵 형태로 매핑할 수 있다.
일반적으로 DTO를 사용하여 매핑한다.
@Query("select new map(u.id as id, u.name as name) from User u where u.id = :id")
Map<String, Object> findUserByIdAsMap(@Param("id") Long id);
DTO
특정 쿼리 결과를 DTO(Data Transfer Object)로 매핑할 때 사용된다.
@Query("select new com.example.dto.UserDTO(u.id, u.name) from User u where u.id = :id")
UserDTO findUserDTOById(@Param("id") Long id);
void
데이터의 수정, 삭제 등의 작업을 수행할 때 반환 타입으로 사용된다.
@Modifying
@Query("update User u set u.status = :status where u.id = :id")
void updateUserStatus(@Param("id") Long id, @Param("status") String status);
참고링크
'👩🏻💻 About 프로그래밍 > spring' 카테고리의 다른 글
JPA 동적쿼리 사용해보기 (0) | 2024.07.19 |
---|---|
JPA 정적쿼리, 동적쿼리(feat. JpaSpecificationExecutor) (0) | 2024.07.19 |
Spring Data Jpa 쿼리 메소드, 네이밍 규칙, 네이티브 쿼리 (0) | 2024.07.15 |
JPA란? (feat. ORM) (0) | 2024.07.15 |
사용자가 로그인을 하지않아 Exception 발생 경우 처리 방법 (1) | 2024.07.12 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기