키보드워리어

[Springframework] Dto개념 익히기 본문

개발 관련/어려웠던것들

[Springframework] Dto개념 익히기

꽉 쥔 주먹속에 안경닦이 2023. 4. 21. 08:36
728x90

안녕하세요 【키보드 워리어】 블로그 방문자 여러분, 안경닦이입니다.

 

스프링 개발을 하면서 생소했던 개념인 Dto에 대해 적어보려고 합니다.

 

@Getter
@RequiredArgsConstructor//final 필드값 생성자 형성
public class HelloResponseDto {
    private final String name;
    private final int amount;
}

 

단순한 구성입니다.

 

롬복기능을 통해 @Getter 코드를 만들어주었고

RequiredArgsConstructor어노테이션은 final 필드값을 생성자 형성을 해주는 어노테이션입니다.

 

저는 이 코드를 작성할 때 뭔가 Entity어노테이션과 비슷하다고 생각했습니다.

 

'아니, Getter,생성자를 해주면 Setter만 추가해 주면 Entity어노테이션 쓴 것과 차이가 없잖아?'

 

궁금한 건 바로 바로 검색해 보는 게 제 특징이라 한번 검색해 보니 역시나 저만 이렇게 궁금했던 게 아니었더군요,,

Entity와 Dto차이 검색결과
Entity와 Dto차이 검색결과

먼저 Entity의 역할부터 정확히 얘기하자면 데이터베이스와 소통하는 어노테이션이라는겁니다.

 

 참고하시면 좋은 글 

2023.04.14 - [Spring framework] - [spring framework] @Entity와 @Component의 차이

 

[spring framework] @Entity와 @Component의 차이

안녕하세요 【키보드 워리어】 블로그 방문자 여러분 오늘은 @어노테이션 @Entity와 @Component의 차이점을 알아보겠습니다. @Entity와 @Component Spring을 통해Web 개발 시 어려웠던 여러 가지 어노테이션

keyboardwarrior.tistory.com

https://www.youtube.com/watch?v=z5fUkck_RZM&t=467s 

하지만 Dto 클래스는 엔티티와는 달리 특정 비즈니스 로직을 처리하기 위한 데이터 전송을 위한 객체이기 때문에, 데이터베이스와는 직접적인 관련이 없습니다.
 
따라서, Dto 클래스에서는 데이터베이스와 매핑되는 어노테이션(@Entity, @Column, @JoinColumn 등)을 사용하지 않습니다.
 
그리고 일반적으로 DTO 클래스에서는 필드의 접근자/설정자 메서드(getter/setter)를 만들어서 사용합니다.
 
제가 이어지는 코드를 작성해보지 않았었기 때문에 궁금증이 들었다고 생각되어지더라고요.
    @GetMapping("/hello/dto")
    public HelloResponseDto helloDto(@RequestParam("name") String name,
                                     @RequestParam("amount") int amount) {
        return new HelloResponseDto(name, amount);
    }

HelloResponseDto를 직접 써보는 메서드입니다.

@RequstParam을 받고 있어요.

 

@RequestParam은 스프링 프레임워크에서 사용되는 어노테이션 중 하나로, HTTP 요청 파라미터를 메서드의 매개변수에 바인딩할 때 사용합니다.

즉, 클라이언트가 브라우저로 HTTP GET 또는 POST 요청을 보낼 때 요청 파라미터로 데이터를 전송하면, 이 요청 파라미터의 값을 컨트롤러 메서드에서 받아서 처리할 수 있도록 도와주는 역할을 합니다. 예를 들어, 위와 같이 @RequestParam을 사용하여 name이랑 amount 두 개의 요청 파라미터 값을 받아올 수 있습니다.

728x90