일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Android
- 알고리즘
- Proxy
- Greedy
- SpringBoot
- transaction
- 김영한
- 자바
- JPQL
- 백준
- 인프런
- AOP
- db
- jpa
- Servlet
- JDBC
- springdatajpa
- 스프링
- Thymeleaf
- spring
- java
- QueryDSL
- pointcut
- kotlin
- http
- 그리디
- Exception
- 스프링 핵심 기능
- 스프링 핵심 원리
- Spring Boot
- Today
- Total
목록dto (8)
개발자되기 프로젝트
1. ItemSaveForm @Data public class ItemSaveForm { @NotBlank private String itemName; @NotNull @Range(min=1000, max=1000000) private Integer price; @NotNull @Max(value = 9999) private Integer quantity; } 2. ItemUpdateForm @Data public class ItemUpdateForm { @NotNull private Long id; @NotBlank private String itemName; @NotNull @Range(min=1000, max=1000000) private Integer price; //수정에서는 수량은 제약 없음...
실무에서는 groups 잘 사용하지 않음. 왜냐? 등록시 Form에서 전달하는 data와 Item Domain 객체와 맞지 않기 때문임. 실제 회원 등록시 회원 정보외에도 약관 정보 등 Item과 관계 없는 데이터가 넘어옴. 따라서 ITem을 직접 받는 것이 아리나, 별도 객체를 만들어서 전달함. 예를들어 ItemSaveForm을 만들어 @ModelAttribute로 사용. 이를 통해 Controller에서 Form data를 받고, 이후 Controller에서 넘어온 data를 사용해서 Item 생성. 1. Form data전달에 Item Domain객체 사용 HTML Form -> Item -> Controller -> Item -> Repository 장점: 중간에 Item을 만드는 과정이 없어서 ..
1. MemberDto projection할 때 member의 username, age만 projection 하고 싶음. @Data public class MemberDto { private String username; private int age; public MemberDto(String username, int age) { this.username = username; this.age = age; } } 2. JPQL 사용하여 DTO로 조회 순수 JPA에서 DTO를 조회할 때는 new 명령어를 사용 DTO의 package이름을 다 적어줘야해서 귀찮음...... 생성자 방식만 지원함 @Test public void findDtoByJPQL(){ List resultList = em.createQue..
1. 엔티티 조회 엔티티를 조회해서 그대로 반환 엔티티 조회 후 DTO로 변환 fetch join으로 쿼리 수 최적화 컬레견 페이징과 한계 돌파 컬렉션은 페티 조인시 페이징이 불가능!!!! ToOne 관계는 페치 조인으로 쿼리 수 최적화하자 data row에 영향을 안줌 컬렉션은 페치 조인 대신에 지연로딩 유지하고, hibernate.default_batch_fetch_size, @BatchSize 2. DTO 직접 조회 JPA에서 DTO를 직접 조회 컬렉션 조회 최적화 - 일대다 관계인 컬렉션은 in절을 통해서 메모리에 미리 조회하여 최적화 플랫 테이터 최적화 - join 결과를 그대로 조회 후 애플리케이션에서 원하는 모양으로 직접 변환 3. 권장 순서 엔티티 조회 방식으로 우선 접근 페치 조인으로 쿼..
1. DTO 로 변환해서 리턴. @GetMapping("/api/v2/simple-orders") public List odersV2(){ List orders = orderRepository.findAllByString(new OrderSearch()); List result = orders.stream() .map(o -> new SimPleOrderDto(o)) //map은 a를 b로 바꾸는 것. .collect(Collectors.toList()); return result; } @Data private class SimPleOrderDto { private Long orderId; private String name; private LocalDateTime orderDate; private Or..
* @RestController = @Controller + @ReponseBody * @RequestBody : JSON 데이터를 Member로 바꿔줌. 1.회원 등록 : 엔티티를 @RequestBody에 직접 매핑 api에서 엔티티를 직접 사용하면 여러 문제점이 있다 엔티티에 프레젠테이션 계층을 위한 로직이 추가됨 엔티티에 API검증을 위한 로직이 들어감.(@NotEmpty 등) 엔티티가 변경되면 API스펙이 변한다. ㅜㅜ @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member){ Long id = memberService.join(member); return new..
1. 회원 목록 조회 MemberController @GetMapping("/members") public String list(Model model){ List members = memberService.findMembers(); model.addAttribute("members", members); //실은 DTO변환 필요해! return "members/memberList"; } DTO 변환 필요. 필요한 정보만 뿌리자. API만들 때 절!대! 엔티티를 외부로 반환하지 말자. 2021.07.15 - [Project/영화리뷰 관리] - ['21.07.14] Entity, DTO 분리 ['21.07.14] Entity, DTO 분리 1. Entity란? DB table에 존재하는 Columns을 fie..
1. Entity란? DB table에 존재하는 Columns을 field로 가지는 객체. 클래스에 @Entity annotation을 붙여 Entity라고 명시함. 2. DTO란? DTO는 Data Transfer Object의 약자로, 계층 간 data 교환 역할을 한다. 특히 Controller와 같이 client와 맡닿아 있는 계층에 entity를 직접 전달하는 대신 DTO를 사용하여 전달한다. DTO는 단순히 데이터 교환을 위한 객체이기 때문에, 특별한 로직을 갖지 않는다. 3. Entity와 DTO를 왜 분리해야함? view와 통신하는 class는 변경이 잦다! 만약 Entity를 주고받는다면, 잦은 Entity의 변화로 DB의 변경도 잦다. 또한 Entity의 변화는 영향의 범위가 매우 크다..