스프링16 [스프링 부트와 JPA 활용] API 개발과 성능 최적화 API 개발과 성능 최적화 API 개발 기본 @RestController, @RequestBody 엔티티 Request Body에 직접 매핑-> 검증로직 추가, 엔티티 변경시 API 스펙 바뀜->DTO 필요 //컨트롤러 List collect = findMembers.stream() .map(m -> new MemberDto(m.getName())) //DTO로 변환 .collect(Collectors.toList()); return new Result(collect); //컬렉션 감싸서 넘기기 @Data @AllArgsConstructor static class Result { private T data; } API 개발 고급 기본 지연 로딩 N+1 쿼리 실행 order.getMember().getNa.. 2022. 7. 3. [스프링 부트와 JPA 활용] 웹 애플리케이션 개발 도메인 분석 설계 //Member @OneToMany(mappedBy = "member")//mappedBy 연관관계주인 아님 private List orders = new ArrayList(); //Order @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; //주문 회원 //==연관관계 메서드==// public void setMember(Member member) { this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem.. 2022. 6. 22. 파일 업로드 파일 업로드 enctype="multipart/form-data" 여러 파일과 폼의 내용을 함께 전송 서블릿 파일 업로드 application.properties에 file.dir=C:/file/ //컨트롤러에 등록 @Value("${file.dir}") private String fileDir; //파일 저장 if (StringUtils.hasText(part.getSubmittedFileName())) { String fullPath = fileDir + part.getSubmittedFileName(); part.write(fullPath); }스프링 파일 업로드 @RequestParam MultipartFile file if (!file.isEmpty()) { String fullPath = fi.. 2022. 6. 21. 타입 컨버터 타입 컨버터 스트링으로 들어옴->직접 타입 변환 String data = request.getParameter("data") 스프링이 중간에서 타입 변환 @RequestParam Integer data @ModelAttribute UserData data @PathVariable("userId") Integer data 컨버터 구현(String->Integer) public class StringToIntegerConverter implements Converter { @Override public Integer convert(String source) { log.info("convert source={}", source); return Integer.valueOf(source); } }컨버전 서비스 개.. 2022. 6. 20. 예외 처리 예외 처리와 오류 페이지 서블릿 예외 처리 Exception-> WAS까지 예외 전달 response.sendError(404, "404 오류"); response.sendError(500); 서블릿 예외 처리 - 오류 화면 제공 //WebServerFactoryCustomizer의 customize구현 ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND, "/error-page/404"); factory.addErrorPages(errorPage404, errorPage500, errorPageEx);오류 정보 추가 request.getAttribute(): 예외, 예외 타입, 오류 메시지, 클라이언트 요청 URI,오류가 발생한 서블릿 이름, HT.. 2022. 6. 19. 로그인 로그인 - 쿠키, 세션 domain은 web을 참조하면 안된다. // LoginService MemberRepository주입 public Member login(String loginId, String password) { return memberRepository.findByLoginId(loginId) .filter(m -> m.getPassword().equals(password)) .orElse(null); } //LoginController - login() Member loginMember = loginService.login(form.getLoginId(),form.getPassword()); if (loginMember == null) { bindingResult.reject("login.. 2022. 6. 18. 이전 1 2 3 다음