Web/Spring

    Controller와 Service 계층 간의 데이터 전달

    학부때 했던 프로젝트를 리팩토링 하던 중에 의문이 생겼다. Spring MVC 패턴에서 계층 간 데이터 전달은 DTO로 한다고 배웠다. Controller-(DTO)-Service-(DTO)-Repository(DAO)-(Entity)-DB 그런데 강의에서 배웠던 코드에서 Service 로직은 Entity를 반환한다. 문제는 이 Entity를 DTO로 변환하여 Controller에 전달해야 하는건지, 아니면 같은 DTO로 주고 받아야 하는 게 더 편한 것 같은데 위험할 것 같기도 하다(찾아보니 실제로 위험하다). 그렇다면 전달용 DTO를 각각 따로 만들어야하나? 도대체 해결책이 뭘까 싶어서 구글링을 했더니 이미 훌륭하신 분들이 열심히 포스팅한 글이 있었다! 그것들을 참고하여 정리해보았다. 1. DTO를 ..

    DAO, DTO, VO, Repository, 뭐가 다른걸까?

    DAO, DTO, VO, Repository, 뭐가 다른걸까?

    Entity doamin 패키지 DB 테이블과 1:1로 매핑되는 객체 데이터베이스 테이블내에 존재하는 컬럼만을 속성으로 가진다 도메인 로직(속성 변경)만을 가지고 있어야 하고 서비스 로직은 가지고 있으면 안된다. DAO(Data Access Object) repository 패키지 DB의 데이터에 접근하기 위한 객체. 삽입, 삭제, 조회 등의 기능 수행 JPA에서의 Repository의 기능과 동일한 역할 DTO(Data Transfer Object) dto 패키지 각 계층간(Controller, View, Business Layer(Model)) 데이터 교환을 위한 객체 로직을 가지지 않는 데이터 객체. Getter와 Setter 메서드만 가진 클래스 유효성 체크 애노테이션 사용하면 편리 https:/..

    [Inflearn] 스프링 MVC (8) 웹 페이지 만들기

    [Inflearn] 스프링 MVC (8) 웹 페이지 만들기

    김영한 강사님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 강의 정리 2022.02.21,03.7 진행 강의를 듣고 개인적으로 정리한 글입니다. 코드와 그림 출처는 김영한 강사님께 있습니다. 문제 있을 시 알려주세요. 드디어 이번 강의 마지막 파트! 졸업과 밴드 합주, 정보처리기사 필기시험 준비 등이 겹쳐 바쁜지라 그간 강의를 거의 듣지 않았다... 필기합격한거 같으니 다시 빠샤~! 다음 강의도 쭉쭉 들어야지 😋 상품 도메인 package hello.itemservice.domain.item; import lombok.Data; import lombok.Getter; import lombok.Setter; //@Data //다만들어줘서 위험하다..(숙지 필요)일반 왔다갔다하는 DTO 정도는 괜..

    [Inflearn] 스프링 MVC (7) HttpMessageConverter

    [Inflearn] 스프링 MVC (7) HttpMessageConverter

    김영한 강사님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 강의 정리 2022.02.06~02.07 진행 강의를 듣고 개인적으로 정리한 글입니다. 코드와 그림 출처는 김영한 강사님께 있습니다. 문제 있을 시 알려주세요. 언제 HttpMessageConverter 가 적용되는가 스프링 MVC는 다음의 경우에 viewResolver 대신 HttpMessageConverter를 적용한다. HTTP 요청 : @RequestBody, HttpEntity(RequestEntity) HTTP 응답 : @ResponseBody, HttpEntity(ResponseEntity) HttpMessageConverter 동작과정 HTTPMessageConverter 인터페이스를 간략히 알아보자면, 다음과 같다. p..

    [Inflearn] 스프링 MVC (6) HTTP 응답

    김영한 강사님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 강의 정리 2022.01.31~02.01 진행 강의를 듣고 개인적으로 정리한 글입니다. 코드와 그림 출처는 김영한 강사님께 있습니다. 문제 있을 시 알려주세요. HTTP 응답 HTTP에서 응답 데이터를 만드는 방식은 크게 3가지 이다. 정적 리소스 뷰 템플릿 사용 HTTP 메시지 사용 1. 정적 리소스 응답 - HTML 정적 리소스 응답이란, 해당 파일을 변경 없이 그대로 서비스하는 것을 말한다. 웹 브라우저에 정적인 HTML, CSS, JS를 제공할 때는 정적 리소스를 사용한다. 스프링 부트에서 src/main/resources는 클래스 패스의 시작 경로로, 리소스를 보관하는 곳이다. 스프링 부트는 클래스패스의 다음 디렉토리에 있는 ..

    [Inflearn] 스프링 MVC (5) HTTP 요청

    [Inflearn] 스프링 MVC (5) HTTP 요청

    김영한 강사님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 강의 정리 2022.01.28 진행 강의를 듣고 개인적으로 정리한 글입니다. 코드와 그림 출처는 김영한 강사님께 있습니다. 문제 있을 시 알려주세요. 💡 실무 핵심 정리 요청 파라미터 조회 (GET, POST) : @RequestParam, @ModelAttribute HTTP 메시지 바디를 직접 조회 : @RequestBody 1. HTTP 요청 클라이언트에서 서버로 요청 데이터를 전달하는 방식은 주로 3가지가 있다. GET - 쿼리 파라미터 전송 POST - HTML Form 전송 (메시지 Body에 쿼리 파라미터 형식으로 담음) HTTP 메시지 바디에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용 (주로 JSON) 2...

    [Inflearn] 스프링 MVC (4) 요청 매핑

    [Inflearn] 스프링 MVC (4) 요청 매핑

    김영한 강사님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 강의 정리 2022.01.27 진행 강의를 듣고 개인적으로 정리한 글입니다. 코드와 그림 출처는 김영한 강사님께 있습니다. 문제 있을 시 알려주세요. 특정 파라미터 조건 매핑, 특정 헤더 조건 매핑은 생략하였음 1. PathVariable(경로 변수) 매핑 최근 HTTP API는 리소스 경로에 식별자를 넣는 다음과 같은 스타일을 선호하고, 실무에서 이런 스타일의 URL 경로를 정말 많이 쓴다고 한다. /mapping/userA /users/1 /** * PathVariable 사용 * 변수명이 같으면 생략 가능 * * @PathVariable("userId") String userId -> @PathVariable userId * /m..