돌맹이
[JPA] findOne 대신 사용할 수 있는 메소드 3가지 본문
findOne 메소드는 Spring Boot에서 엔티티의 식별자(ID)를 기반으로 단일 엔티티를 검색하는데 사용되었으나 현재는 Deprecated 되었다.
따라서 Spring Boot 2.0부터는 findOne 대신 다른 방식을 사용해야 하는데, 다음와 같은 메소드를 사용할 수 있다.
1. findById
엔티티의 식별자(ID)를 기반으로 단일 엔티티를 검색하는 메소드로, return타입으로 Optional을 사용해야 한다. CrudRepository 또는 JpaRepository 인터페이스에서 제공되고 엔티티를 찾지 못할 경우 Optional.empty()를 반환한다.
Optional<T> findById(ID id);
만약 return으로 Optional이 아닌 타입을 받고 싶다면, 뒤에 .get() 메소드를 붙여주면 된다.
Board board = boardRepo.findById(1L).get();
2. getOne
지정된 식별자(ID)로 엔티티의 참조를 반환한다. 이 메소드는 지연 로딩(lazy loading)을 사용하며, 엔티티를 실제로 로드하지 않고 프록시(proxy) 객체를 반환하고 이를 통해 성능을 향상시킬 수 있다. JpaRepository 인터페이스에서 제공된다.
T getOne(ID id);
3. findBy
지정된 조건에 따라 단일 엔티티를 검색한다. findBy 메소드는 필드 이름과 조건 값을 사용하여 엔티티를 검색할 수 있다. 이 메소드는 쿼리 메소드(Query Methods)의 일부로 제공된다. 예를 들어, findByFirstName 메소드는 firstName 필드가 주어진 값을 가진 엔티티를 반환다.
Optional<T> findByFieldName(Type fieldName);
'programming > JPA' 카테고리의 다른 글
[JPA] JPQL 사용하여 TABLE JOIN 하기 (1) | 2023.06.13 |
---|---|
[JPA] Reason: Validation failed for query for method public abstract java.util.List 오류 해결 (0) | 2023.06.12 |
[JPA] StrategySelectionException Error (0) | 2023.06.07 |