T.S.L/스프링 입문

92일차(Repository, DTO에서의 @Getter와 @Setter)

haedal-uni 2021. 12. 14. 01:33
728x90

T.S.L은 Today Spring Learned로써 오늘 스프링 공부한 부분을 정리하는 글이다.

 

Repository

public interface MemoRepository extends JpaRepository<Memo, Long> {
    List<Memo> findAllByOrderByModifiedAtDesc();
    //List<Memo> findAll By OrderBy ModifiedAt Desc();
}

 

findAllByOrderByModifiedAtDesc() 처럼 이 이름은 어떻게 정해지는 걸까?

 

첫글자가 대문자로 작성해서 멤버변수를 작성한다.

예를 들어 멤버변수가 name이라면 아래와 같이 작성할 수 있다.

 

👉🏻 findByName

 

 

JPA 공식 홈페이지 살펴보기

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods

 


@Getter, @Setter

private 걸어두면 getter/setter를 사용한다 라고 알고 있었는데

강의에서 Dto에 @Setter를 적을 필요가 없다고 하셨다.

 

그래서 왜 필요없을까 검색해봤는데

Restful API 에 POST Method로 요청 시에 Body의 Json을 requestDto로 매핑하는데 있어서
@Setter가 필요없다 라고 적혀있었다.

(ObjectMapper가 전환을 해주니, Setter가 없어도 값이 할당되기 때문에 POST에서는 @Setter가 필요없다

라고 적혀있었다.)

 

1. 그렇다면 JSON 형식으로 보내지 않는다면 @Setter가 필요하다는 걸까?

2. 그리고 GET에서는 private 으로 설정된 변수들로 인해 getter/setter를 사용하는 걸까??

 

 

A.

  https://jojoldu.tistory.com/407 이 링크를 보셨냐고 하셨다. (검색에서 다 이렇게 나와있어서 질문드렸다고 했다.)

@Setter가 필요하다.

Response에 사용할 DTOSetter가 필요하다.

 

현업에서는 보편적으로 DTO에는 @Setter, @Getter을 붙여준다.

붙여준다고 해서 성능상 엄청 좋지 않거나 그렇지는 않는다.

dto는 일반적으로 setter을 쓴다.

 

👉🏻 private을 사용하니 @Getter와 @Setter 둘 다 쓰는 걸로만 계속 기억하면 될 듯 하다!

 

 

728x90

'T.S.L > 스프링 입문' 카테고리의 다른 글

99일차(API)  (0) 2021.12.20
96일차(스프링 웹 개발 기초)  (0) 2021.12.17
95일차 (MVC와 템플릿 엔진)  (0) 2021.12.16
94일차(라이브러리)  (0) 2021.12.16
93일차  (0) 2021.12.14