Burninghering's Blog
article thumbnail
Published 2021. 12. 1. 05:31
211129TIL_Lombok, DTO Today I Learned

Lombok(라이브러리)의 역할

자바 프로젝트를 진행하는데 필수적으로 필요한 메소드/생성자 등을 자동생성(getter,setter 등)

->코드 절약

 

어노테이션을 더 잘 쓸 수 있도록 체크 표시


lombok을 사용해,

Coures 클래스와 CourseRepository 클래스의 코드를 줄여보자

 

  •  Coures 클래스에서 getter 지우고 @Getter 

Week02Application 에서 에러가 남..
Coures 클래스에 어노테이션 @Getter 추가 -> 오류 해결!

 

 

  • Coures 클래스의 @NoArgsConstructor 

@NoArgsConstructor 덕분에 기본 생성자를 생성해도 에러가 안나용

 

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

멤버 변수로 레포지터리가 서비스에 꼭 필요하다고 선언은 해주어야 함!

// final: 서비스에게 꼭 필요한 녀석임을 명시(검색을 하거나, 업데이트를 할때 레포지터리 꼭 필요하니깐!)
    private final CourseRepository courseRepository;

 


DTO(Data Transfer Object)

데이터를 주고 받을 때 기존 클래스를 사용하지 말고 새로 클래스를 만들어서 하자!

 

예시)

    @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 요청 관련 정보를 물고다닐 녀석!)

@Setter //정보를 물고 다닐 녀석이니까 게터,세터 둘다 필요
@Getter
@RequiredArgsConstructor
public class CourseRequestDto {
    private final String title; //private가 final로 생성이 되면, 필요한 생성자를 바로 만들어줌 -> @RequiredArgsConstructor
    private final String tutor;

}

 

Week02Application.java 수정

업데이트 메소드를 Course.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
profile

Burninghering's Blog

@개발자 김혜린

안녕하세요! 반갑습니다.