ํ์๊ฐ์ DTO๋ฅผ ๋ชจ๋ ๋ง๋ค์ด๋ณด์๋ค.
์ด์ ํ์๊ฐ์ DTO๋ฅผ ๋ง๋ค์์ผ๋,, ๋ก๊ทธ์ธ! DTO ๋ ๋น ๋ฅด๊ฒ ๋ง๋ค์ด๋ณด์.
๋ค์ ํ๋ฒ ์๊ธฐ ์ํฌ๊ฒธ MVC ํ๋ฆ์ ํ๋ฒ ๋ณด๊ณ ์งํํ๊ฒ ๋ค.
๋จผ์ ๋ก๊ทธ์ธ ์์ฒญ DTO (LoginRequestDTO) ๋ถํฐ ๋ง๋ค๊ฒ ๋ค.
LoginRequestDTO ์ ์ฒด ์ฝ๋
package com.example.projectpicker.user.dto;
import lombok.*;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
// ํด๋ผ์ด์ธํธ ----> ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ก ์๊ตฌ!!๊ณผ์ ์์ ์ฌ์ฉ๋๋ DTO (๋ก๊ทธ์ธ ๋ฒํผ ํด๋ฆญ์)
@Setter @Getter @ToString
@NoArgsConstructor
@AllArgsConstructor
@Builder
@EqualsAndHashCode
public class LoginRequestDTO {
@Email
@NotBlank
private String email;
@NotBlank
@Size(min = 8, max = 20)
private String password;
}
๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ฅด๋ฉด DB๋ก ๋ ๋ผ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํด๋ณด์.
์ ์ฌ์ง ์ฒ๋ผ ์ด๋ฉ์ผ, ๋น๋ฐ๋ฒํธ ๊ฐ ํ์ํ ๋ก๊ทธ์ธํ์ด์ง๋ฅผ ๋ง๋ค๊ฒ ๋ค ํ๋ค๋ฉด,
private String email;
private String password;
์ด๋ ๊ฒ ๋๊ฐ๋ง ํ์ํ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์ด์ ์๋ตํด์ฃผ๋ LoginResponseDTO ๋ ๋ง๋ค์ด๋ณด์.
package com.example.projectpicker.user.dto;
import com.example.projectpicker.user.entity.UserEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import java.time.LocalDate;
// ๋ก๊ทธ์ธ์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํด์ฃผ๋ ๊ฐ์ฒด ( ํด๋ผ์ด์ธํธ <---- DB)
@Setter @Getter @ToString
@NoArgsConstructor
@AllArgsConstructor
@Builder
@EqualsAndHashCode
public class LoginResponseDTO {
private String email; // ์ด๋ฉ์ผ
private String userName; // ํ์ ์ด๋ฆ
@JsonFormat(pattern = "yyyy๋
MM์ dd์ผ")
private LocalDate joinDate; // ๊ฐ์
๋ ์ง
private String token; // ์ธ์ฆ ํ ํฐ
private String message; // ์๋ต ๋ฉ์์ง
// ์ํฐํฐ๋ฅผ DTO๋ก ๋ณ๊ฒฝ
public LoginResponseDTO(UserEntity userEntity, String token){
this.email = userEntity.getUserEmail(); // ์ด๋ฉ์ผ -- DB ์ด๋ฉ์ผ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต ์ ๋ฌํ๋ dto์ ๋ฃ์ด์ค๋ค.
this.userName = userEntity.getUserName(); // ํ์ ์ด๋ฆ
this.joinDate = LocalDate.from(userEntity.getJoinDate()); // ๊ฐ์
๋ ์ง
this.token = token; // ํ ํฐ
}
}
private String email; // ์ด๋ฉ์ผ
private String userName; // ํ์ ์ด๋ฆ
private LocalDate joinDate; // ๊ฐ์
๋ ์ง
private String token; // ์ธ์ฆ ํ ํฐ
private String message; // ์๋ต ๋ฉ์์ง
์ด์ ์๋ต์ด๊ธฐ ๋๋ฌธ์ ํ์์ํฐํฐ์์ DTO๋ก ํ๋ฆ์ด๋๊น
public LoginResponseDTO(UserEntity userEntity, String token){
this.email = userEntity.getUserEmail(); // ์ด๋ฉ์ผ -- DB ์ด๋ฉ์ผ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต ์ ๋ฌํ๋ dto์ ๋ฃ์ด์ค๋ค.
this.userName = userEntity.getUserName(); // ํ์ ์ด๋ฆ
this.joinDate = LocalDate.from(userEntity.getJoinDate()); // ๊ฐ์
๋ ์ง
this.token = token; // ํ ํฐ
}
๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
Entity, Dto ๊ตฌ๋ถํ๋ ์ด์ ?
๋ง์ฝ์ Dto๊ฐ ์์ด Entity๋ง ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํ๋ฉด DB์ ์ง์ ์ ์ผ๋ก ๋งคํ๋์ด์๋ Entity๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ฌ๋ฌ ํด๋์ค์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง Dto๊ฐ ์กด์ฌํ๋ค๋ฉด ๋ณ๊ฒฝ์ฌํญ์ Entity๊ฐ ์๋ View์ ํต์ ํ๋ Dto์์ ์ฒ๋ฆฌํ๊ณ ๋ง์ง๋ง commit๋จ๊ณ๋ง Entity์์ ์ฒ๋ฆฌ๋๋๋ก ํ๋ค๋ฉด ํด๋์ค์ ์ํฅ์ด ๋ ๋ฏธ์น ๊ฒ์ด๋ค.
์ฌ์ฉ์๊ฐ ์ด๋ค ๊ฒ์๋ฌผ์ ๋ด์ฉ์ ์์ ํ๋ค๊ณ ๊ฐ์ ํด๋ณด๋ฉด ๋จผ์ ํด๋น ๊ฒ์๋ฌผ์ id๋ฅผ ๊ฐ์ง๊ณ Repository๋ฅผ ํตํด ํด๋น๊ฒ์๋ฌผ์ DB์ ๋ณด๋ฅผ ์ฐพ๋๋ค.
์ด๋ Repository๋ Entityํ์์ผ๋ก ๋ฆฌํดํ๋ค. ์ดํ ํด๋น Entity๋ฅผ toDto๋ฅผ ์ด์ฉํ์ฌ Dto๋ก ๋ณํ ํ ์์ ํ๊ณ ์ถ์ ๋ด์ฉ์ ๋ฐ์ํ์ฌ Dto์ ์ ์ฅํ๋ค. ์ดํ toEntity๋ฅผ ํตํด Entityํ ์ํจ ํ save๋ฅผ ํ๋ค.
'Spring๐ > ๊ฐ๋จํ ๊ฒ์ํ ๋ง๋ค๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JPA] ๊ฐ๋จํ ๊ฒ์ํ ๋ง๋ค๊ธฐ - user (UserService) (0) | 2023.02.12 |
---|---|
[JPA] ๊ฐ๋จํ ๊ฒ์ํ ๋ง๋ค๊ธฐ - user (UserRepository) (1) | 2023.02.11 |
[JPA] ๊ฐ๋จํ ๊ฒ์ํ ๋ง๋ค๊ธฐ - user (UserSignupResponse DTO) (0) | 2023.02.11 |
[JPA] ๊ฐ๋จํ ๊ฒ์ํ ๋ง๋ค๊ธฐ - user (DTO) (1) | 2023.02.11 |
[JPA] ๊ฐ๋จํ ๊ฒ์ํ ๋ง๋ค๊ธฐ - user (UserEntity ์ํฐํฐ) (0) | 2023.02.11 |