shift x2해서 plugins 들어가서 lombok install 먼저 하기
lombok을 통해서 CourseClass와 CourseRepo코드를 줄여보자 !
at CourseClass!
@Getter <-게터도 코드 필요 없음~
@NoArgsConstructor <= 파라미터가 없는 생성자 - 기본 생성자
at CourseService!
생성자를 통해서 Repo를 받았던 부분.
public CourseService(CourseRepository courseRepository) {
this.courseRepository = courseRepository;
}
근데 이거 필요 없어졌음 !!
그러자
private final CourseRepository courseRepository; 에서 빨간줄 등장
얘는 외치는 고야..
아니 나 코스리포짓 전달 받아야 하눈데;; 어디갔냐;;
final 저부분은 이 서비스에서 꼭 필요 한 거라고 !
그래서 등장한 롬복 어노테이션 ㅋ
@RequiredArgsConstructor <-필요한 생성자 여기로 보충해줌ㅎㅎ
롬복 쵝오~~
이 부분이 생성자 부분인데 그러면 기본 생성자는 어디로 간고얍?
Data Transfer Object
데이터를 주고 받을때는 새로 클래스 만들어서 하자!기존의 클래스 쓰지말자
일단 Service에서 Update할때 !
코스 클래스는 저장할때나 클라이언트에게 보여줄때 쓰는 건데..
다른 사람이 잘 못 건들이면 크나 큰 오류를 범하기 쉽다는 점 !
update에서 변경용으로 사용하는것은 좋지 않아요.
domain에다가 CourseRequestDto생성!
코스 정보관련 필요한 부분들은 DTO를 쓰겠다!!
즉 . 얘는 코스에 관한 정보를 물고 다니는 녀석이란 말이다
course class를 직접 쓰지 않겠다는 말이라구욧
course가 가진 녀석 일단
멤버 입력
private String title;
private String tutor;
그 다음에 private이니까 @Getter @Setter설정해준다
그 다음에 final도 각각 넣어준다.
why?private 에 final도 생성하면 필요한 생성자가 만들어진다. (what?)
@Setter
@Getter
@RequiredArgsConstructor
public class CourseRequestDto {
private final String title;
private final String tutor;
}
자 이제 파일을 살짝살짝씩 클래스를 썼던 곳을 바꿔보장
Repo first!
@Transactionl
public Long update(Long id, Course course CourseRequestDto requestDto){
Course course1 = courseRepository.findById(id).onElseThrow(
() -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.")
);
course1.update(requestDto);
return course1.getId();
그 다음에 CourseClass
update Method 확인 해보자
public void update(Course course CourseRequestDto requestDto){
this.title = requestDto.getTitle();
this.tutor = requestDto.getTutor();
}
자 lombok 과 Dto에 대해서 다시 복습 해보았고
처음에는 Dto에 개념이 많이 안잡혔었는데
다시 들어 보니까 이제 Dto를 어디에다가 넣으면 좋을 지 감이 살짝 온다 ㅎㅎ