TIL

67일차_ Spring 2주차 정리

haedal-uni 2021. 11. 18. 23:47
728x90

 

@NoArgsConstructor
@Getter
public class CourseRequestDto {
    private String title;
    private String tutor;

    public CourseRequestDto(String title, String tutor) {
        this.title = title;
        this.tutor = tutor;
    }
}

 public CourseRequestDto(String title, String tutor) ~는 왜 쓰는 걸까?

👉🏻 생성자를 만들기 위해서

 

 

@NoArgsConstructor는 기본생성자 자동으로 만들어 준 것이다.

 

 

private String title;
private String tutor;

private로 선언된 멤버 변수를 접근하려면 생성자가 있어야 한다.

 

 

 

@NoArgsConstructor 대신 @RequiredArgsConstructor 입력하고 final 붙여도 되는 걸까??

 

답은 아니다. (❌)

이유 보러가기 → [spartacodingclub/TIL] - 78일차

@Setter
@RequiredArgsConstructor
@Getter
public class CourseRequestDto {
    private final String title;
    private final String tutor;

}

 

 

 


10. API - POST, PUT, DELETE

 

  // PUT
    @PutMapping("/api/courses/{id}") 
    public Long updateCourse(@PathVariable Long id, @RequestBody CourseRequestDto requestDto) {
        return courseService.update(id, requestDto);
    }

수정할 값을 가져와야 하는데
처음 파라미터 값은 @PathVariable을 적어서 url에서 가져오는 값이 id 값이라는 것을 알 수 있고

 

두번째 파라미터는 클라이언트가 전송하는 Json(application/json) 형태의 HTTP Body 내용을 Java Object로 변환시켜주는 역할이 @requestbody라고 하는데 그 값을 object로 변환해서 requestDto에 담는 것이다.

 

class가 CoursequestDto인 멤버변수를 requestDto라는 변수 이름으로 설정해줘서 넣어두고

return값에 requestDto를 받는데 requestDto가 title과 tutor를 담고 있다.

 

 

 

 

 

 

ARC(Advanced REST Client)

* H2 웹콘솔은 서버가 작동하는 동안에만 내용을 저장하는 인메모리 DB이기 때문에

  서버가 작동을 멈추면 데이터가 모두 삭제된다.

 

 

GET

 

 

 

 

POST

POST를 실행 후에 제대로 데이터가 생성되었는지 GET을 통해 확인한다.

 

 

 

 

 

 

PUT

PUT을 실행 후에 제대로 데이터가 수정되었는지 GET을 통해 확인한다.

* PUT의 URL은 어떤 것을 수정할지 값을 넣어줘야한다.

 

 

 

 

 

 

DELETE

 

 

 

Controller, Service, Repository 계층

Controller는 자동 응답기

Service는 update 쓰는 얘

Repository 직접 쿼리를 날리는 얘

 

계층 간 소통을 위해 DTO 사용 

 

 

 

 

 

🤔

Update 는 Service 부분에 작성한다고 하고 나머지는 REPO에 CRUD를 하는 것 같은데
왜 update를 Course.java에 넣는건지를 모르겠다.

 

    public void update(CourseRequestDto requestDto) {
        this.title = requestDto.getTitle();
        this.tutor = requestDto.getTutor();
    }

 

repo에서 update를 못하고 service에서 하는데

course 객체에 직접 작성해서 main에 실행하는 방법도 있지만
controller하고 service package에서 update 코드를 작성해서 dto로 repo에 넘겨도 된다는걸까??

 

아래 링크를 참고해서 공부해야겠다.

튜터님께 질문 >> [spartacodingclub/TIL] - 68일차

 

Spring Data JPA CRUD , https://dongdd.tistory.com/177

 

[Spring] Spring JPA 2 - Spring Data JPA, Spring Data JPA CRUD

[Spring] Spring JPA 2 - Spring Data JPA, Spring Data JPA CRUD Spring Data JPA Spring Data - 데이터에 접근하는 코드를 줄이기 위한 스프링 프로젝트 - DDD(Domain-Driven Design, 도메인 주도 설계)에서의..

dongdd.tistory.com

 

 

 

 

728x90

'TIL' 카테고리의 다른 글

71일차  (0) 2021.11.23
68일차(튜터님께 질문하기)  (0) 2021.11.20
66일차 spring 정리  (0) 2021.11.18
65일차(도커, 이미지, 컨테이너, 쿠버네티스)  (0) 2021.11.17
61일차(DI, IoC, Bean 개념 검증 받기)  (0) 2021.11.13