티스토리 뷰
이 과정을 거쳐야 하는 이유가 뭘까?
로직이 명확하다.
초기 구현 시간은 더 들지만 추후에 수정이 필요한 경우 오히려 수정시간이 짧아진다.
프론트엔드가 요구하는 정보가 변경되었다면, ResDTO 만 수정하면 된다.
프론트엔드에서 들어오는 정보가 변경되었다면 ReqDTO 만 수정하면 된다.
엔티티 field 와 controller 에서 다룰 data 가 100% 동일한 경우는 거의 없을 것이다. 필드명도, 주어지는 정보도 주어야 할 정보도 다르다.
그래서 유지보수 측면에서 Transfer 객체를 만들어주는 것이다.
package com.ssafy.db.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import lombok.*;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Builder
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "book_name")
private String bookName;
@Column(name = "book_author")
private String bookAuthor;
@Column(name = "book_contents")
private String bookContents;
@Column(name = "book_publisher")
private String bookPublisher;
@Column
private String isbn;
@Column(name = "book_pub_year")
private int bookPubYear;
@ManyToOne
@JoinColumn(name = "GENRE_ID")
private Genre genre;
@Column(name = "book_thumbnail_url")
private String bookThumbnailUrl;
@Column(name = "loan_count")
private int loanCount;
}
package com.ssafy.DTO;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class BookDTO {
private int id;
private String bookName;
private String bookAuthor;
private String bookContents;
private String bookPublisher;
private String isbn;
private int bookPubYear;
private int loanCount;
private int genreId;
private String bookThumbnailUrl;
}
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class GetBookRes {
private int id;
private String name;
private String author;
private String contents;
private String publisher;
private String isbn;
private int pubYear;
private int loanCount;
private int genreId;
private String thumbnailUrl;
public GetBookRes(BookDTO data) {
setName(data.getBookName());
setAuthor(data.getBookAuthor());
setContents(data.getBookContents());
setPublisher(data.getBookPublisher());
setIsbn(data.getIsbn());
setPubYear(data.getBookPubYear());
setLoanCount(data.getLoanCount());
setGenreId(data.getGenreId());
setThumbnailUrl(data.getBookThumbnailUrl());
}
}
'Spring' 카테고리의 다른 글
ResponseEntity 에 대해 알아봅시다 (0) | 2022.02.02 |
---|---|
RuntimeException 에 대해 알아봅시다 (0) | 2022.02.02 |
Intellij Tip (0) | 2022.01.20 |
JpaRepository + PagingAndSortingRepository + CrudRepository (0) | 2022.01.20 |
SpringBoot(JPA) vs. Django (0) | 2022.01.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 개발도서추천
- ssafy후기
- ssafy합격후기
- 디즈니얼굴
- 코딩도서
- ssafy결과
- 깃허브계정
- 임대차3법
- 클린코더
- ssafy6기
- intj여자
- 개발자커리
- 한글무료폰트추천
- 개발언어추천
- 개발자
- SSAFY
- 클린코드
- 개발자도서추천
- 개발언어순위
- 폰트
- 깃허브계정2개
- 싸피
- 맥과윈도우로깃허브
- 개발자로드맵
- 무료폰트추천
- 싸피6기
- 브왈라
- 상업용무료폰트
- 폰트추천
- 개발자책추천
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함