DTO란 무엇일까?
DTO(Data Transfer Object)는 데이터 전송 및 이동을 위해 생성되는 객체를 의미한다.
Client에서 보내오는 데이터를 객체로 처리할 때 사용된다.
또한 서버의 계층간의 이동에도 사용된다.
그리고 DB와의 소통을 담당하는 Java 클래스를 그대로 Client에 반환하는 것이 아니라 DTO로 한번 변환한 후 반환할 때도 사용된다.
특별한것이 아니라 그냥 자바 클래스이지만 의미를 부여한 것이다.
Create 구현
1. 메모 데이터를 저장할 Memo 클래스 생성 후 아래 코드 작성
package com.sparta.memo.entity;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class Memo {
private Long id;
private String username;
private String contents;
}
2. 메모 생성하기 API를 받을 수 있는 Controller와 메서드 생성
controller 패키지를 만들고 MemoController 클래스 만들고 아래의 코드 작성
3. Client에 데이터를 반환할 때 사용할 MemoResponseDto 클래스 생성
package com.sparta.memo.dto;
import lombok.Getter;
@Getter
public class MemoResponseDto {
private Long id;
private String username;
private String contents;
}
4. Client의 요청 데이터를 받아줄 MemoRequestDto 클래스 생성
위와 같은 dto 패키지에 MemoRequestDto 클래스 생성
package com.sparta.memo.dto;
import lombok.Getter;
@Getter
public class MemoRequestDto {
private String username;
private String contents;
}
다시 MemoController로 돌아와서 이렇게 수정한다.
클라이언트에서 보낸 데이터를 Entity화 시키기 위해 받은 데이터를 이용해 Memo 클래스의 객체를 생성한다.
지금 오류가 발생하는 이유는
Memo 클래스가 현재 기본생성자(@NoArgsConstructor) 밖에 없기 때문이다.
클라이언트로부터 받은 데이터타입을 받는 생성자를 만들어준다.
Memo의 Max ID 찾기
현재 DB가 없기때문에 Map으로 대신한다.
현재 저장된 자료중 가장 큰 ID값을 구해서 + 1을 한 후 maxId를 저장한다. 만약 저장된게 없다면 id값을 1로 저장한다.
DB에 저장 후 Responsedto를 사용해 반환
마찬가지로 MemoResponseDto에도 생성자를 만들어줘야 한다.
Read 구현
PostMan으로 테스트하기
추가로 알아낸 점
Create 구현하면서 만든 Controller 메서드의 반환이 없어도 일단 정상 작동하는것을 알았다.
'Spring 입문주차 > 1주차' 카테고리의 다른 글
17. Database (0) | 2024.08.14 |
---|---|
16. Update, Delete 구현하기 (0) | 2024.08.14 |
14. 메모장 프로젝트 설계 (0) | 2024.08.14 |
13. HTTP 데이터를 객체로 처리하는 방법 (0) | 2024.08.14 |
12. Path Variable과 Request Param (0) | 2024.08.13 |