어노테이션 기반으로 메소드, 생성자 등을 자동완성해줌으로써 코드를 절약할 수 있게 해주는 라이브러리
기존에 있던 getter을 지우면 application파일에서 getter로 돌아가던 부분에 오류가 생긴다.
@Getter를 추가해주면 getter코드를 작성하지 않아도 Lombok이 자동으로 작성해주기 때문에 오류가 사라진다.
@NoArgsConstructor 이라는 어노테이션은 기본 생성자를 생성해주는 역할을 한다. 만약 이 어노테이션을 사용하지 않으면
Courcse c = new Course();
라는 코드를 작성했을 때 기본 생성자를 만들어주지 않아서 오류가 난다. 하지만 어노테이션을 사용함으로써 기본 생성자 코드를 작성하지 않아도 오류가 나지 않아 코드를 절약할 수 있게 된다.
- 계층간 데이터 교환을 위해 사용하는 객체
- 로직이 없는 순수한 데이터 객체
- DB의 데이터를 Service나 Controller로 보낼 때 사용한다.
테이블을 건드리는 것은 다른 사람도 마음대로 변경할 수 있다는 것이기 때문에 완충재 역할을 하는 것이 DTO이다.
CourseRequestDto라는 Course 데이터를 갖는 객체를 만들어주면 그 객체를 통해 직접 update, read할 수 있다.
CourseRequestDto requestDto = new CourseRequestDto("웹개발의 봄, Spring", "임민영");
courseService.update(1L, requestDto);
// 생성한 DTO로 직접 업데이트
public void update(CourseRequestDto requestDto) {
this.title = requestDto.getTitle();
this.tutor = requestDto.getTutor();
}
✅ 강의 예제에서는 원래도 짧은 코드였기 때문에 Lombok을 사용한다고 엄청난 코드 절약이 되지는 않았지만 확실히 간결하고 편해졌다.
변수가 많아지고 기능도 늘어나서 생성자도 필요하고 Override해줘야 하는 경우에는 클래스의 길이도 늘어나고 코드가 길어지면서 가독성이 떨어지는 경우에는 Lombok을 적용해서 단순화함으로써 엄청난 코드 절약을 할 수 있을 것 같다.