API(4)
-
[Spring] API - 컬렉션 조회(1 : N)
일대다 관계(One To Many)에서 조회하는 방법과 최적화하는 방법을 알아보자! toOne 관계와는 다르게 주의할 점이 많다. V1. 엔티티 직접 노출 V2. 엔티티를 조회해서 DTO로 변환하기 V3. 엔티티를 조회해서 DTO로 변환(fetch join 사용) V4. JPA에서 DTO로 바로 조회(1+N 쿼리) V5. JPA에서 DTO로 바로 조회(최적화로 1+1 쿼리) V6. JPA에서 DTO로 바로 조회(플랫 데이터 1쿼리) 이번 포스팅에서는 V3. 엔티티를 조회해서 DTO로 변환(fetch join 사용) 까지 알아보고, 다음 포스팅에서는 V6. JPA에서 DTO로 바로 조회(플랫 데이터 1쿼리)다루고있다. V1. 엔티티 직접 노출 먼저 Order와 OrderItem은 1:N의 관계이다. Ord..
2022.04.17 -
API 예외 처리 (1) - MediaType, ExceptionResolver
HTML을 응답으로 보내주는 경우에는 예외처리를 4xx, 5xx 등의 오류 페이지만 있다면 대부분의 문제를 해결 가능했다. 이에 대한 포스팅은 https://mr-popo.tistory.com/53?category=1004552 스프링 예외 처리와 오류 페이지 서블릿은 크게 두가지 방식으로 예외 처리를 지원한다. Exception (예외) response.sendError(HTTP 상태 코드, 오류 메시지) Exception(예외) 자바의 메인 메서드를 실행하면 main이라는 이름의 쓰레드가 실행 mr-popo.tistory.com 지금부터 API의 경우 어떻게 예외 처리를 하면 좋은지 알아보자! @Slf4j @RestController public class ApiExceptionController {..
2022.04.09 -
검증 - Bean Validation(HTTP 메시지 컨버터)
들어가기 전에, @Valid , @Validated 는 HttpMessageConverter ( @RequestBody )에도 적용할 수 있다. > @RequestBody 는 HTTP Body의 데이터를 객체로 변환할 때 사용한다. 주로 API JSON 요청을 다룰 때 사용한다. 다음과 같은 컨트롤러가 있다. @Slf4j @RestController @RequestMapping("/validation/api/items") public class ValidationItemApiController { @PostMapping("/add") public Object addItem(@RequestBody @Validated ItemSaveForm form, BindingResult bindingResult) { ..
2022.04.02 -
스프링 웹 개발 방식 - 정적컨텐츠, MVC 패턴, API
1. 정적컨텐츠 정적 컨텐츠는 서버에서 가공하지 않은 파일을 사용자에게 그대로 보내주는 방식 2. MVC와 템플릿 엔진 서버에서 프로그래밍을 통해 HTML을 동적으로 변경하여 사용자에게 전송하는 방식. 이를 위해 Model – View – Controller로 관심사를 나눈다. Controller는 내부 동작을 처리하며, Model은 데이터를 담아 controller에 전달해주는 역할을, View는 사용자에게 보여지는 부분을 담당한다(화면 출력). Model은 분리된 코드를 연결하는 역할(데이터 저장 및 전송)을 수행한다. 클라이언트로부터 입력 받은 데이터는 Model에 저장되어 Controller로 전달된다. Controller는 작업 결과를 Model에 저장하며 이 Model은 출력 파트(View)로..
2022.02.16