Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 리액트 네이티브 시작하기
- React Native
- 팀플회고
- SQL
- 리액트 네이티브
- 스터디
- 리액트 네이티브 프로젝트 생성
- 백준 4949번
- 지네릭스
- 딥러닝
- HTTP
- 백준 5525번
- 모두를위한딥러닝
- 깃허브 토큰 인증
- 백준 4358번
- 백준
- 정리
- 자바
- 백준 4358 자바
- 네트워크
- 머신러닝
- 모두의네트워크
- 깃 연동
- 깃 터미널 연동
- 데베
- 깃허브 로그인
- 모두를 위한 딥러닝
- 모두의 네트워크
- 문자열
- 데이터베이스
Archives
- Today
- Total
솜이의 데브로그
Spring Data JPA 에서 get~ 메서드와 find~ 메서드의 차이점을 알아보자 본문
GET
- 프록시 객체 반환
- 실제 사용할 때 DB 접근
- Lazy Loading
- 비어있는 객체를 반환할 경우 EntityNotFoundException 발생
FIND
- 프록시가 아니라 실제로 DB에서 값을 찾아옴
- Optional 로 한번 감싸서 값을 가져옴. 해당 id의 값이 없다면 Null 반환
- 해당하는 Entity가 없을 경우 Optional.empty() 반환
정리
내부의 값을 필요로 하지는 않고 다른 객체에게 할당하는 목적으로만 조회하는 경우, getReferenceById 를 사용하면 성능상 이점이 있을 수 있다.
getReferenceById 는 EntityManager의 getReference 메서드를 호출하여 참조값만 가져온 후, 조회된 entity의 내부 값이 필요해지는 시점에 lazy loading으로 DB를 조회해 값을 가져오도록 동작한다.
그러나 get 을 사용하여 가져왔는데 이후 DB에 해당 값이 없으면 NPE가 발생하므로 변경이 빈번한 경우 직접적으로 DB에 접근하여 찾아오는 find 방식이 더 좋다.
상황에 따라 맞추어 사용하자!
'dev > Spring Boot' 카테고리의 다른 글
List<>를 변수로 가지고 있을 때 엔티티 업데이트 (0) | 2023.02.04 |
---|---|
[Spring Boot] 웹 계층 개발(2) (0) | 2022.03.31 |
[SpringBoot] 웹 계층 개발(1) (0) | 2022.03.25 |
[Spring Boot] 주문 도메인 개발(2) (0) | 2021.12.03 |
[Spring Boot] 주문 도메인 개발(1) (0) | 2021.11.17 |