컬쥐네 다락방

getById()와 findById()의 차이점 본문

웹 개발/Java,Spring

getById()와 findById()의 차이점

코딩하는 갱얼쥐 2021. 9. 3. 14:19

JPA를 사용할 때 ID값으로 엔티티를 가져오는 방법에는 두 가지가 있다. 

getById()와 findById().

두 메소드는 비슷하지만 차이점이 존재한다.

 

1.  getById()

getById()는 원래 getOne()이었으나 해당 메소드는 더이상 사용되지않고 대체되었다.

내부적으로 EntityManager.getReference() 메소드를 호출하기 때문에 엔티티를 직접 반환하는 것이 아니라 프록시만 반환한다.

프록시만 반환하기 때문에 실제로 사용하기 전까지는 DB에 접근하지 않고, 접근을 시도할 때 데이터가 없으면 EntitiyNotFoundException이 발생한다.

 

2. findById()

findById()는 실제 DB에 요청해서 엔티티를 가져오는 메소드이다.

영속성 컨텍스트의 1차 캐시를 먼저 확인하고, 데이터가 없으면 실제 DB에 데이터가 있는지 확인하는 작업.

 

차이점 : 

getById()는 해당 엔티티를 사용하기 전까지는 DB에 접근하지 않기 때문에 성능상으로 더 유리하다.

특정 엔티티의 ID 값만 활용할 일이 있다면 DB에 접근하지 않고 프록시만 가져와서 사용할 수 있다.

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

AngularJS commit conventions - 커밋 메시지  (0) 2021.11.25
Flyway를 이용한 DB 초기화  (0) 2021.08.07
JWT와 OAuth 차이점  (2) 2021.07.05
RESTful API 란?  (0) 2021.06.29
Spring MVC 란?  (0) 2021.06.14
Comments