[2주차]Lombok, DTO

송수용·2022년 3월 23일
0

웹 개발의 봄, Spring

목록 보기
13/25

Lombok 사용하기

Lombok 은
자바 프로젝트를 진행하는데 거의 필수적으로 필요한 메소드/생성자 등을 자
동생성해줌으로써 코드를 절약할 수 있도록 도와주는 라이브러리

Lombok을 사용하여 코드를 줄여보자!
Lombok 설치 후
@Getter를 사용하면 기존의 Getter들을 만들지 않아도 에러가 나지 않는다.

또한 @NoArgsConstructor 역시 Lombok가 관계가 있어서 기본생성자를 따로 만들어줄 필요가 없다.

CourseService

@Service 
public class CourseService {

  
  private final CourseRepository courseRepository;

  public CourseService(CourseRepository courseRepository) {
    this.courseRepository = courseRepository;
  }

위의 코드를
@RequiredArgsConstructor 를 이용해서

@RequiredArgsConstructor
@Service // 스프링에게 이 클래스는 서비스임을 명시
public class CourseService {

  // final: 서비스에게 꼭 필요한 녀석임을 명시
  private final CourseRepository courseRepository;

이렇게 코드를 줄일 수 있다.

DTO

Data Transfer Object

= read, update할 때 Course 클래스를 막 써도 될까?
= 내가 아닌 다른 사람이 변경이라도 한다면??
만약 테이블을 막 건드리게 되면 코드 작성을 하다가 내가 아닌 다른 사람이
마음대로 막 변경을 실수로 하게 되면 시스템이 오류가 날 가능성이 커진다.
왜냐하면 클래스를 건드리는 것은 DB가 변경될 가능성이 커지기 때문이다.
그러다보니 DB와 연결된 클래스는 그대로 두고

정보를 가지고 있는 것을 따로 만들 필요성이 부각이 되는데
그때 필요한 것이 DTO이다.

데이터를 전달하고 서로 주고 받을 때는 새로운 클래스를 만들어서 하자.
기존의 클래스를 사용하지 말자

package com.sparta.week02.domain;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;

@Setter
@Getter
@RequiredArgsConstructor
public class CourseRequestDto {
  private final String title;
  private final String tutor;
}

DTO를 만들었다. 기존의 getter setter 방식에서 lombok을 적용하여 단 몇줄의 코딩을 통해
간단하게 만들 수 있었다.

CourseRequestDto requestDto = new CourseRequestDto("웹개발의 봄, Spring", "임민영");
      courseService.update(1L, requestDto);
      courseList = courseRepository.findAll();
      for (int i=0; i<courseList.size(); i++) {
        Course course = courseList.get(i);
        System.out.println(course.getId());
        System.out.println(course.getTitle());
        System.out.println(course.getTutor());
      }

기존의 코드에서 CourseRequestDto로 변수를 수정하여 update할 내용을 작성했다.

profile
#공부중 #협업 #소통중시 #백엔드개발자 #능동적 #워커홀릭 #스파르타코딩 #항해99 #미니튜터 #Nudge #ENTJ #브레인스토밍 #아이디어뱅크

0개의 댓글