dto

컬렉션 조회 - DTO로 변환 이전 V1의 엔티티 노출 문제를 해결하기 위해 DTO로 변환하여 반환해야 한다. 이전과 같은 방식으로 변환하되 DTO 내부에 엔티티를 두어서는 안된다. 1. 코드 @GetMapping("/api/v2/orders") public List ordersV2(){ List orders = orderRepository.findAllByString(new OrderSearch()); List result = orders.stream() .map(o -> new OrderDto(o)) .collect(toList()); return result; } //OrderDto @Data static class OrderDto { private Long orderId; private Strin..
주문조회 V4 - JPA에서 DTO로 바로 조회 V4: JPA에서 DTO로 바로 조회하여 Select절에서 원하는 데이터만 선택하여 조회하는 방법을 알아보겠다. @GetMapping("/api/v4/simple-orders") public List ordersV4() { return orderSimpleQueryRepository.findOrderDtos(); } Controller에 다음 코드를 추가한다. 이전 V3와 다른점이 보일 것이다. 바로 기존 DTO가 아니라 새로운 DTO로 반환한다. 또한, 참조하는 레포지토리도 변경되었다. 또, 엔티티를 DTO로 변환하는 작업도 없어진 것을 볼 수 있다. 지금부터 하나하나 설명 하겠다. 우선 새로 만든 레포지토리 이다. @Repository @Required..
주문조회 V2 - 엔티티를 DTO로 변환 엔티티를 외부에 노출하면 안된다. V2에서는 엔티티를 조회하여 DTO로 변환한다. @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 Local..
회원 조회 API 1. V1 회원 조회 API의 제일 단순한 코드이다 @GetMapping("/api/v1/members") public List membersV1(){ return memberService.findMembers(); } 무슨 문제가 있을까? 1) 문제점 엔티티가 외부에 직접 노출된다. 엔티티의 모든 값이 노출된다. 엔티티에서 특정 필드의 값을 숨기고 싶을때는 필드에 @JsonIgnore 어노테이션을 추가해야 한다. 위와 같은 응답 스펙을 맞추기 위한 로직이 추가된다. 프레젠테이션 로직이 엔티티에 추가된다. 실무에서는 같은 엔티티에 대해 API의 용도에 따라 수많은 API 스펙이 요구된다. 여러 스펙에 대한 API를 엔티티 하나에 담기는 매우 어렵다 엔티티가 변경되면 API스펙이 변한다...
최근에는 Controller에서 HTML 뷰를 렌더링하지 않고 JSON과 같은 데이터를 메시지 바디에 직접 넣어서 데이터를 반환하는데 이러한 방식을 API방식이라고 한다. 이때 Controller에 @Controller가 아닌 @RestController를 사용하여 Rest API라고도 한다. 1. 회원등록 API 회원등록 API를 만들어 보려고 한다. 1) V1 @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1( @RequestBody @Valid Member member) { Long id = memberService.join(member); return new CreateMemberResponse(id); } @Data..
Entity, DTO, DAO, VO 1. Entity DB 테이블과 매핑되는 클래스 2. DAO(Data Access Object) DB를 사용해 데이터를 조회하거나 조작하는 기능을 하는 오브젝트 서비스와 DB사이에서 데이터를 옮기는 역할 -> 즉, 쿼리를 날려 데이터를 가져오거나 저장 DB에 로그인, 입력, 받아오기, 수정, 삭제 등의 작업들을 정의한 클래스 JPA Repository객체들이 일반적으로 DAO 역할을 함 3. DTO(Data Transfer Object) 계층간 데이터 교환을 위한 객체 DB에서 얻은 데이터를 Controller나 Service 로직에서 사용하기 위한 객체 로직 없이 데이터와 getter, setter만 존재 Request, response용 DTO: View를 위한 ..
코드 미식가
'dto' 태그의 글 목록