이제 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 마지막으로 API에 있어서 조회를 구현해보자. 조회의 경우에 맨처음 말했던 저장처럼 DTO를 통해서 API를 구현하는 것이 좋다. 우선 그렇게 하지 않은 소스 코드의 경우에는 @GetMapping("/api/v1/members") public List membersV1(){ return memberService.findMembers(); } 다음과 같이 할 수 있지만, entity - api간의 양방향 의존관계가 ..
페이지에 설명된 소스코드는 링크에 있습니다. update와 같은 경우에도 앞선 저장과 같이 별도의 DTO를 만들어서 해주는 것이 좋다. @PutMapping("/api/v2/members/{id}") public UpdateMemberResponse updateMemberV2( @PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request){ memberService.update(id, request.getName()); log.info("request name {}", request.getName()); Member member = memberService.findOne(id); return new UpdateMemberResp..
페이지에 설명된 소스코드는 링크에 있습니다. 가장 먼저 API를 통해서 데이터베이스에 저장하는 것을 개발해보자. 구현해놓은 Entity와 JPA repository를 통해서 구현이 가능하다. API Code @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member){ Long id = memberService.join(member); return new CreateMemberResponse(id); } [참고] Member.java @Entity @Data public class Member { @Id @GeneratedValue @Column(name = "memeber..
- Total
- Today
- Yesterday
- API
- centos
- Producer
- Java
- broker
- Firebase
- Data Engineering
- apache kafka
- cs
- frontend
- consumer
- JPA
- NextJS
- spring
- feign client
- 리액트
- KAFKA
- Linux
- docker
- logback
- rhel
- Container
- K8S
- React
- Front
- zookeeper
- spring boot
- apache
- 프론트엔드
- OS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |