영속성 전이 한 개의 엔티티를 persist 할 때에 영속성 전이 설정이 되어 있는 엔티티도 자동으로 persist 해주는 것이다. 간단하게 Parent와 Child 객체를 예로 들면 Parent.java @Entity public class Parent { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String name; @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true) private List childList = new ArrayList(); public void addChild(Child child){ childList..
1:N 연관관계 맵핑 연관관계 맵핑이란 JPA가 관계형 DB와 연결되면서 관계형 DB의 정규화 과정을 표현하는 것이다. 예를 들어 team의 입장에서는 member가 여러명이라는 것에서 team과 member는 1:N 관계가 되는 것이다. @Entity public class Member{ /* ~~ */ @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID") private Team team; /* ~~*/ } @Entity public class Team{ /* ~~ */ @OneToMany(mappedBy = "team") private List members = new ArrayList(); } team 1개에 member가 여러명이라 O..
이전에 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 앞선 Get, Post를 통해서 Naver API를 호출해보는 실습을 하자. 네이버의 API는 https://developers.naver.com/여기서 확인 할 수 있다. 그 중에서 지역 검색과 이미지 검색을 호출하는 것을 개발해보도록 하자. Document > 검색 > 지역을 들어가면 다음처럼 API spec을 볼 수 있다. 네이버의 경우에는 굉장히 깔끔하고 이쁘게 정리를 해두어 개발하기가 매우 편하다. 가장 ..
- Total
- Today
- Yesterday
- feign client
- frontend
- NextJS
- Data Engineering
- Linux
- K8S
- React
- 리액트
- Front
- cs
- broker
- caching
- JPA
- spring
- Firebase
- 프론트엔드
- KAFKA
- OS
- Producer
- backend
- rhel
- apache kafka
- apache
- API
- spring boot
- consumer
- Container
- zookeeper
- Java
- centos
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |