컬렉션을 패치 조인하면 페이징이 불가능하다 - 컬렉션을 페치 조인하면 일대다 조인이 발생하므로 데이터가 예측할 수 없이 증가한다. - 일대다에서 일(1)을 기준으로 페이징하는 것이 목적인데 다(N)을 기준으로 row가 생성된다. - Order를 기준으로 페이징 하고 싶은데, 다(N)인 OrderItem을 조인하면 OrderItem이 기준이 되어버린다. - 이 경우 하이버네이트는 경고 로그를 남기고 모든 DB 데이터를 읽어서 메모리에서 페이징을 시도한다. 최악의 경우 장애로 이어질 수 있다. 그럼 어떻게 페이징 + 컬렉션 엔티티를 함께 조회해야할까? public List findAllWithMemberDelivery(int offset, int limit){ return em.createQuery("sel..
package jpabook2.jpashop2.domain; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity @Table(name = "orders") @Getter @Setter public class Order { @Id @GeneratedValue @Column(name= "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) //order 입장에서는 여러개의 order에 하나의 회원이다. @Joi..
@GetMapping("/api/v2/simple-orders") public List orderV2(){ List orders = orderRepository.findAllByString(new OrderSearch()); List result = orders.stream().map(o -> new SimpleOrderDto(o)).collect(Collectors.toList()); return result; } @Data static class SimpleOrderDto{ private Long orderId; private String name; private LocalDateTime orderDate; private OrderStatus orderStatus; private Address add..
1. 엔티티 그대로 노출 @GetMapping("/api/v1/simple-orders") public List orderV1(){ List all = orderRepository.findAllByString(new OrderSearch()); return all; } 엔티티를 그대로 노출할 경우 어떻게 될까? 이렇게 끝도 없는 json을 보게 될 것이다. public class Order { @Id @GeneratedValue @Column(name= "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) //order 입장에서는 여러개의 order에 하나의 회원이다. @JoinColumn(name = "member_id") //FK를 지정해준..
V1 @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member){ //@RequestBody request로 받은 json 데이터를 객체에 넣어준다. Long id = memberService.join(member); return new CreateMemberResponse(id); } entity package jpabook2.jpashop2.domain; import jakarta.persistence.*; import jakarta.validation.constraints.NotEmpty; import lombok.Getter; import lombok.Setter;..
참고 블로그 : https://www.datoybi.com/http-proxy-middleware/ SOP? 자바스크립트 엔진 표준 스펙의 보안 규칙 중, 하나의 출처(Origin)에서 로드된 자원(문서나 스크립트)이 일치하지 않는 자원과 상호작용 하지 못하도록 요청 발생을 제한하는 정책이 있습니다. 그것이 바로 SOP (Same Origin Policy, 동일 출처 정책)입니다. 즉, http://localhost:8000와 http://localhost:8000/posts는 같은 출처라서 상호작용이 가능한데, http://google.com에서 http://localhost:8000를 호출하면 SOP에 위배됩니다. 그렇다면 동일한 출처의 기준은 무엇일까요? 동일 출처의 기준 http://example..
{ //axios 사용 axios.get('https://codingapple1.github.io/shop/data'+dataNum+'.json').then((result)=>{ console.log(result); let data = result.data; let copy = [...shoes,...data]; //기본 배열에 추가하는 방법 setShoes(copy); let numCopy = dataNum; numCopy = numCopy + 1; setDataNum(numCopy); }).catch( setResultShoes(false) //제품이 더이상 없을 시에 발동 ) }}>버튼 위와 같인 코드를 작성했다. 문제 1. 3번 클릭시에 404오류가 화면에 표시 되었다. 문제 2. 1번만 클릭해도..
서버야 웹툰 줘 1. 방법(GET/POST) 2. 어떤자료(URL) 보내달라 데이터를 받을 때에는 GET 데이터를 줄 때에는 POST ajax중 라이브러리 axios를 사용하겠다. npm install axios 터미널에 입력해서 인스톨 받아준다. app.js 상단에 추가 import axios from 'axios'; 사용방법 { //axios 사용 axios.get('https://codingapple1.github.io/shop/data2.json').then((result)=>{ let data = result.data; let copy = [...shoes,...data]; //기본 배열에 추가하는 방법 setShoes(copy); }) }}>버튼 그 외에 Post 등의 요청 { //axios ..
- Total
- Today
- Yesterday
- 스프링공부
- 향해플러스
- 리터럴
- HTTP
- Intercepter
- BindingResult
- Java
- 인터셉터
- React
- thymleaf
- exception
- 백엔드 개발자 공부
- JPA
- filter
- react실행
- hypertexttransferprotocol
- 향해플러스백엔드
- rejectValue
- 컨트
- ArgumentResolver
- 백엔드 개발자 역량
- 항해99
- 항해플러스
- reject
- jpa api
- 향해99
- 예외처리
- SpringBoot
- 로그인
- 스프링부트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |