오늘은 스프링 Lv1 과제를 제출했다. 과제를 제로부터 설계하고 만들어가면서 MVC 패턴에 대한 이해를 좀 더 할 수 있었고 설계한 대로 만들었을 때 잘 동작하는 것을 보고 뿌듯함을 느낄 수도 있었다.
그리고 함께 항해를 이어가는 동료가 과제를 하는 데 어려움을 겪고 있어 어떤 게 어려운지 물어봤더니 나처럼 Dto? Entity? 언제 Dto 를 쓰는 거고 언제 Entity 를 쓰는 거지? 이 생성자는 왜 만드는 거지? 이런 부분들에 대한 어려움을 겪고 있었다.
그래서 동료에게 열심히 설명해주었고 동료도 혈이 뚫린 기분이라며 매우 만족했다.
오늘 TIL은 내가 동료에게 알려준 부분에 대해서 정리하려 한다.
DTO ? Entity?
먼저 dto 객체와 entity 객체다.
@Entity 어노테이션을 붙여서 만든 entity 클래스, 그리고 entity 클래스로 만든 entity 객체 이 객체는 데이터베이스와 데이터를 주고 받을 때 사용한다. 이번 과제에서는 Jpa를 이용했는데 repository 를 사용할 때 반드시 entity 객체로 데이터를 주거나 혹은 받아야 한다.
dto 객체는 그 외에 클라이언트와 데이터를 주고 받을 때, 컨트롤러 <-> 서비스 계층에서 데이터를 주고 받을 때 사용한다.
dto는 데이터를 옮기기 위한 바구니 정도로 생각하고 entity 는 값이라고 생각한다면 좀 더 이해가 쉽다.
데이터 베이스에는 값을 저장하고, 데이터베이스로부터는 값을 받아와야 하므로 entity 를 사용하는 것이고 그 외에 계층 간에 데이터 이동 시에는 이동에 필요한 바구니 dto를 이용하는 것이다.
이 생성자는 왜 만드는 거?
이 질문에 대한 답은 제로 베이스부터 과제를 완성시켜 나가며 얻을 수 있었다. 클라이언트로부터 입력받는 데이터를 옮기는 데 쓰이는 requestDto, 여기에 담긴 데이터를 데이터베이스에 넣으려면 entity 객체를 만들어줘야 한다.
따라서 entity 클래스에서 requestDto 를 받아 객체를 만들 수 있는 생성자를 만들어주어야 하는 것이다. 마찬가지로 데이터베이스로부터 값을 가져오면 entity 객체로 받아오는데 클라이언트한테 넘겨주기 위해서는 responseDto에 담아야 하고 이를 위해서 responseDto 클래스에서는 entity 객체를 받아 respontDto를 만드는 생성자를 만들어주어야 하는 것이다.
'항해99' 카테고리의 다른 글
[TIL] DAY 17 (0) | 2023.04.20 |
---|---|
[TIL] DAY 16 (0) | 2023.04.18 |
[WIL] 항해 2주차 (0) | 2023.04.17 |
[TIL] DAY 13 (0) | 2023.04.16 |
[TIL] DAY12 (0) | 2023.04.15 |