Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

돌맹이

[JPA] findOne 대신 사용할 수 있는 메소드 3가지 본문

programming/JPA

[JPA] findOne 대신 사용할 수 있는 메소드 3가지

오택 2023. 6. 7. 18:33


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);