Spring JPA๋ฅผ ํ์ฉํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์๋กญ๊ฒ ์๊ฒ๋ ์ ์ด ์์ด ์ ๋ฆฌํ๊ณ ์ ํ๋ค.
Entity๋ฅผ ์ ์ํด์ ์ฌ์ฉํ๋ฉด์ ์ด์ ํ๋ก์ ํธ์์๋ ์๋น์ค๋จ์์ Entity์ Dto๋ฅผ ๋น๋ ํจํด์ ์ฌ์ฉํด์ ๋ฐ์ดํฐ ๊ฐ์ ๋ฃ์ด์ฃผ๊ณค ํ์๋๋ฐ, ์ด๋ฒ ํ๋ก์ ํธ์์๋ Entity์ toResponseDto() ๋ฉ์๋์ ์์ฑ์๋ฅผ ๋ง๋ค์ด์ ๋ฐ์ดํฐ ๊ฐ์ ๋ฃ์ด์ฃผ๋ ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
์ด์ ๋ํด Entity๋ฅผ ๋ณดํธํ๋ผ! ๋ผ๋ ํผ๋๋ฐฑ์ ๋ฐ์๊ณ , ๊ณ ์น๋ ๋ฐฉ๋ฒ๋ ์ ๋ฌ๋ฐ์๊ธฐ์ ๊ธฐ๋กํด๋ณด๋ ค๊ณ ํ๋ค.
๐ง Entity๋ฅผ ๋ณดํธํด์ผ ํ๋ ์ด์
Entity๋ ์ค์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด์ด๋ฏ๋ก ์ต๋ํ ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ก ์ ์งํ๊ณ , DTO์์ ์์กด์ฑ์ ์์ ๋ ๊ฒ์ด ์ข๋ค.
Entity๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ 1:1 ๋งคํ๋๋ ๊ฐ์ฒด์ธ๋ฐ, DTO์์ ๋ณํ ๋ก์ง์ด ๋ค์ด๊ฐ๋ฉด ์ญํ ์ด ์ ๋งคํด์ง ์ ์๋ค.
๋ฐ๋ผ์, ๋ณํ์ด ํ์ํ๋ค๋ฉด DTO์ ๋ณํ ๋ก์ง์ ๊ตฌํํ๋ ๊ฒ์ด ์ณ๋ค!
์ด์ ์ ์์ฑํ Entity ์ฝ๋
@Entity
@Table(name = "p_restaurant_menu")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@Builder
public class Menu extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private UUID rmId;
@Column(length = 100, nullable = false)
private String rmName;
@ColumnDefault("true")
private Boolean isPublic;
public Menu(CreateMenuRequestDto requestDto) {
this.rmName = requestDto.getRmName();
this.isPublic = requestDto.getIsPublic();
}
public MenuResponseDto toResponseDto() {
return MenuResponseDto
.builder()
.rmId(this.rmId)
.rmName(this.rmName)
.isPublic(this.isPublic)
.build();
}
์์ฑ์์ toResponseDto ๋ฉ์๋๋ฅผ ๊ฐ๊ฐ RequestDto์ ResponseDto๋ก ์ฎ๊ฒจ์ ์์ฑํด์ฃผ์๋ค.
RequestDto
@Builder
@Getter
@AllArgsConstructor
public class CreateMenuRequestDto {
@NotNull
private UUID resId;
@Length(max = 100)
@NotNull
private String rmName;
private Boolean isPublic;
@NotNull
private UUID resId;
private Boolean isPublic;
public Menu toEntity(CreateMenuRequestDto requestDto) {
return Menu
.builder()
.rmName(requestDto.getRmName())
.isPublic(requestDto.getIsPublic())
.build();
}
}
ResponseDto
@Getter
@Builder
@AllArgsConstructor
public class MenuResponseDto {
private UUID rmId;
private String rmName;
private Boolean isPublic;
}
private UUID rmId;
private String rmName;
private Boolean isPublic;
public static MenuResponseDto fromEntity(Menu menu) {
return MenuResponseDto
.builder()
.rmId(menu.getRmId())
.rmName(menu.getRmName())
.isPublic(menu.getIsPublic())
.build();
}
}