부트캠프/코트스테이츠 백엔드 코스

24~27차 회고

태태코 2023. 4. 16. 20:56
반응형

이제 알바가 끝났고, 알고리즘, web , spring , java에 온 전력을 다 할 것이다.

월요일부터 화이팅.

 

Spring boot의 핵심 기능과 구조에 대해서 간략하게 정리를 해보았다,
HTTP메서드, REST API에 대해서는 이 다음 회고에서 정리하도록 하고 이번 회고에서는  서비스 계층과 DTO에 대해서 설명을 해보려고 한다.

앞의 내용을 나중에 설명하는 이유는 앞의 내용이 더 중요한 내용들이 많아서 그렇기 때문이고 간략하게 설명하자면,  컨트롤러, 서비스, 리파지토리 이런 구조로 크게 3가지로 나뉠 수 있고, 컨트롤러에서 handler method를 통해 여러 기능들을 다양한 계층에게 처리하도록 요청 할 수있는데 현재 Service클래스가 없다면? 그것을 Controller의 hadler method에서 처리해야 한다는 단점이 있다. 즉. 

 

controller와 비지니스로직을 담당하는 service 계층의 분리에 대해서 알아보겠다.

public class //Service {
    public Member create~() {
        return null;
    }

    public Member update() {
        return null;
    }

    public Member find(ID) {
        return null;
    }

    public List<> finds() {
        return null;
    }

    public void delete() {

    }
}

이런 식으로 비지니스 로직을 따로 분리해서 처리하는 것이다 즉. 이러한 클래스를 처리하려면 당연스럽게 Controller의 코드안에

들어가게 되는 것이다. 즉 여기서 DI의 개념이 들어가는 것이다.

 

이런식으로 컨트롤러에 Service의 클래스를 주입해야 하는 상황이 생기고, 이 것을 DI를 통해 처리할 수 있는데 @Autowired 와

@RequiredArgsConstructor

를 통해 처리할 수 있고, 그냥 의존성만 주입하려면 생성자를 통해 처리할 수 있다. 하지만 여기서 문제가 또 생긴다.  뭐냐하면

 

Controller에서 API즉 client에게 받은 요청들을 담은 변수들을 많이 담았을 때 그것을 모두 Service에게 보내려고 했을 때 파라미터 즉 전달값이 너무 많아진 다는 것이다. 이것을 어떻게 해결할 까 생각했지만, 여기서 나오는 개념이 DTO 개념이다.

 

public class Member {
    private long memberId;
    private String email;
    private String name;
    private String phone;
}

이렇게 전달 받을 인자값을 알 고 있다면 미리 Class를 통해서 객체를 만들 어 주는 것이다. 여기서 가장 중요한 것은 Entity개념인데 , 총 모두 가지고있는 성질들을 모아놓은 것을 Entity라고 하고, 그 중 보여주고 싶은 것이나 받고 싶은 것을 DTO를 통해서 작게 만들어서 처리를 하는 것이다 예를 들면

 

Email; 과 name;만 따로 빼서 받은 후 Member라는 entity로 변환을 해서 큰 틀로 저장을 하는 것이다. 그럼 여기서 또 다른 큰 개념이 나오게 된다. 그것이 바로 Mapper라는 개념이다. entitiy라는 최종 목적으로 반환하기 위해서는 일일이 개발자가 mapping을 해주는 방법이 있는데 spring에서는 의존성을 추가하면 이것을 자동으로 해준 다는 것이다. 

 

implementation 'org.mapstruct:mapstruct:1.4.2.Final'
	annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'

이 의존성을 추가해 줘야하고, *Lombok 의존성 밑에 추가해야한다. 아니면 에러가 날 가능 성이 크다.

 

그렇게 되면 DTO를 Entitiy에 메핑하는 코드가 생성되게 되고, 그것을 이용하면 끝이다. 여기까지가 DTO와 서비스를 공부하면서 정리 한 것이다. 이 뒤에는 더 중요한 부분을 설명해보도록 하겠다.

 

반응형

'부트캠프 > 코트스테이츠 백엔드 코스' 카테고리의 다른 글

30~31  (0) 2023.04.27
28~30회고  (0) 2023.04.16
24일차 스프링 프레임워크  (0) 2023.04.11
회고 20~23일차  (0) 2023.03.29
회고 19일  (0) 2023.03.20