![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHyMee%2FbtrGsoAFoTq%2F0gYRYEj1bgFiHoGkuLCyL1%2Fimg.png)
[JPA 활용] 지연 로딩과 조회 성능 최적화 - 엔티티 직접 노출하기
2022. 7. 5. 02:28
SpringBoot
순환 참조가 발생하는 API 위와 같이 설계된 데이터베이스가 있고 현재 주문 + 배송 정보 + 회원을 조회하는 API를 만들었다 가정하자. Controller의 API 코드는 다음과 같고 간단하게 주문 정보를 전부 가져오는 API이다. 보기에는 크게 문제가 있을까 싶지만 해당 API에는 컴파일 타임에는 잡히지 않는 장애 요소가 있다. @GetMapping("/api/v1/simple-orders") public List orderV1() { List result = orderRepository.findAllByString(new OrderSearch()); return result; }어떤 문제인지 확인하기 위해 먼저 빌드 후 포스트맨으로 테스트를 해보자. 포스트맨으로 요청을 날려보니 결과값도 안나오고 ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWZ4Us%2FbtrFbN0H9F0%2Fk85xDkqSOjlKzRvtKbIvy1%2Fimg.png)
JPA 변경 감지와 병합 정리
2022. 6. 19. 03:47
SpringBoot
변경 감지(Dirty Checking) JPA에서 사용하는 기본 메커니즘으로 실제 데이터베이스와 값과 엔티티의 값이 변화된 부분을 감지할 때 사용하는 패턴이다. 공부를 하고 정리를 하다보니 생각난 부분은 더티 체킹과 유사한 기법을 생각보다 많은 사람이 경험하고 있지 않나라는 생각이였다. 그것은 바로 필자처럼 흔히들 Javascript로 개발을 시작했다면 쉽게 접해볼 Vue.js와 React.js에서도 유사한 개념이 나온다. Vue.js나 React.js의 경우 가상돔(Virtual Dom)이란 개념을 이용해서 화면에서 변경된 부분만을 리렌더링하며 효율적으로 관리한다. 해당 부분에서 더티 체킹 기법이 구현된 방법 중 하나로 사용된다. 준영속 엔티티 준영속 엔티티는 영속성 컨텍스트가 더 이상 관리하지 않는 ..