이전에 ToOne관계는 fetch join 이후 ToMany는 지연 로딩으로 가져오는 것까지 봤다. 다음으로는 지연로딩으로 가져오는 과정에서 결국 query가 많이 날아가기 때문에, ToMany또한 쿼리를 만들어서 해주는 방법이 있다. public List findOrderQueryDtos() { List results = findOrders(); results.forEach(o -> { List orderItems = findOrderItems(o.getOrderId()); o.setOrderItems(orderItems); }); return results; } private List findOrderItems(Long orderId){ return em.createQuery( "select new ..
이제 1:N 관계의 컬랙션을 조회할 때의 방법을 알아보자. 가장 쉽지만 가장 좋지 않은 방법인 entity에 직접 조회하는 방법이 있다. @GetMapping("/api/v1/orders") public List ordersV1(){ List all = orderRepository.findAllByCriteria(new OrderSearch()); for(Order order: all){ order.getMember().getName(); order.getDelivery().getAddress(); List orderItems = order.getOrderItems(); for(OrderItem orderItem : orderItems){ orderItem.getItem().getName(); } } r..
해당 설명의 소스코드는 링크를 걸어두었습니다. JPA에서는 sql qeury를 한번 감싸놓은 것이기 때문에, 아무렇게나 쓰면 성능에 매우 안좋은 영향을 미칠 수 있다. 특히, select * from [DB name]과 같은 쿼리를 날리게 되면 join 관계가 많은 테이블은 성능이 매우 안좋아 질 수 있다. 그럼 가장 간단하지만 성능이 안좋은 방법으로 먼저 진행을 하면 @GetMapping("/api/v1/simple-orders") public List orderV1(){ List all = orderRepository.findAllByCriteria(new OrderSearch()); for (Order order: all){ order.getMember().getName(); // Lazy 강제 초..
해당 글의 소스코드는 링크 걸어 두었습니다. GitHub - dolgogae/TIL: Today I Learned Today I Learned. Contribute to dolgogae/TIL development by creating an account on GitHub. github.com 이전 글에서 넘어와 Post를 알아보도록 하자. Post로는 조금 더 복잡한 예제를 찾아봤다. 그래도 복잡하다 해봤자 request나 response 타입이 좀 더 복잡할 뿐이다. 앞선 예제보다 조금더 복잡해보이지만 변수 묶음인 keywordGroups는 객체로 만들어주면 되고 나머지는 예제에 나와있는 자료형으로 해주면 된다. DatalabTotalSearchRequest.java @Data @NoArgsConst..
해당 글의 소스코드는 링크 걸어 두었습니다. GitHub - dolgogae/TIL: Today I Learned Today I Learned. Contribute to dolgogae/TIL development by creating an account on GitHub. github.com 앞선 Get, Post를 통해서 Naver API를 호출해보는 실습을 하자. 네이버의 API는 https://developers.naver.com/여기서 확인 할 수 있다. 그 중에서 지역 검색과 이미지 검색을 호출하는 것을 개발해보도록 하자. Document > 검색 > 지역을 들어가면 다음처럼 API spec을 볼 수 있다. 네이버의 경우에는 굉장히 깔끔하고 이쁘게 정리를 해두어 개발하기가 매우 편하다. 가장 ..
해당 글의 소스코드는 링크 걸어 두었습니다. GitHub - dolgogae/TIL: Today I Learned Today I Learned. Contribute to dolgogae/TIL development by creating an account on GitHub. github.com 앞선 Get을 통한 방식과 크게 다르지 않다. 단지 변수를 어떻게 담아서 보내는 데에 차이가 있다. public UserResponse post(){ // http://localhost:9090/api/server/user/{userId}/name/{userName} URI uri = UriComponentsBuilder .fromUriString("http://localhost:9090") .path("/api/..
- Total
- Today
- Yesterday
- 프론트엔드
- NextJS
- Linux
- consumer
- spring boot
- broker
- Front
- React
- centos
- apache
- feign client
- KAFKA
- cs
- rhel
- Producer
- API
- zookeeper
- 리액트
- Container
- spring
- K8S
- docker
- logback
- Java
- apache kafka
- OS
- Firebase
- JPA
- Data Engineering
- frontend
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |