Lombok(라이브러리)의 역할 :
자바 프로젝트를 진행하는데 필수적으로 필요한 메소드/생성자 등을 자동생성(getter,setter 등)
->코드 절약

lombok을 사용해,
Coures 클래스와 CourseRepository 클래스의 코드를 줄여보자
- Coures 클래스에서 getter 지우고 @Getter


- Coures 클래스의 @NoArgsConstructor


- CourseService.java에 레포지터리가 꼭 필요하다고 명시하는 코드 절약하기

멤버 변수로 레포지터리가 서비스에 꼭 필요하다고 선언은 해주어야 함!
<java />
// final: 서비스에게 꼭 필요한 녀석임을 명시(검색을 하거나, 업데이트를 할때 레포지터리 꼭 필요하니깐!)
private final CourseRepository courseRepository;
1. DTO(Data Transfer Object)
데이터를 주고 받을 때 기존 클래스를 사용하지 말고 새로 클래스를 만들어서 하자!
예시)
<java />
@Transactional // SQL 쿼리가 일어나야 함을 스프링에게 알려줌. 자동으로 DB에 반영해줌
public Long update(Long id, Course course) {
Course course1 = courseRepository.findById(id).orElseThrow(
() -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.")
);
course1.update(course);
return course1.getId(); //업데이트 후 어떤 데이터가 업데이트되었는지 id 반환
}
업데이트 함수를 만들 때, 인자로 "id" 와 "업데이트해야할 정보"를 받는다.
"업데이트해야할 정보"는 Course 클래스를 이용해서 받고 있는데,
클래스는 뭔가를 직접 저장할 때나, 찾아서 클라이언트에게 넘겨줄때나 활용을 해야한다.
업데이트 함수에서처럼 무언가를 변경할 때 클래스를 사용하면 안된다.
(Course 클래스를 사용하면 DB가 변경된다)
그러므로 DB에 연결된 클래스는 그대로 두고,
정보를 물고다니는 녀석을 따로 만들자!(DTO=완충재)
업데이트 함수는 Course의 정보를 변경해 달라고 요청하는 것이니,
domain 패키지 안에 CourseRequestDto.java 파일을 만든다 (Course 요청 관련 정보를 물고다닐 녀석!)
<java />
@Setter //정보를 물고 다닐 녀석이니까 게터,세터 둘다 필요
@Getter
@RequiredArgsConstructor
public class CourseRequestDto {
private final String title; //private가 final로 생성이 되면, 필요한 생성자를 바로 만들어줌 -> @RequiredArgsConstructor
private final String tutor;
}
Week02Application.java 수정

CourseService.java 수정하기

Course.java 수정하기

결과는..

잘 바뀌었다!
'Today I Learned' 카테고리의 다른 글
Spring 게시판 만들기 (0) | 2021.12.07 |
---|---|
211130TIL_API (0) | 2021.12.02 |
211125TIL_자바 완전 기초! (0) | 2021.11.25 |
211123TIL_JPA (0) | 2021.11.25 |
4 Ls: 반복되는 TIL 회고를 바꿔보자! (0) | 2021.11.23 |