00.Project 계획 및 구상도

김명래·2023년 1월 3일
0

해당 Project 를 진행하면서 어려운 점이 있었는데
어떤 기술을 사용할것이고 어떻게 적용할것인지 였다.

orm 을 mybatis로 이용하고 spring legacy 를 이용해 만들었다면 좀 더 쉽게 했겟지만

이왕하는거 처음써보는걸 이용해봐야겟다 싶어 orm 은 JPA frameWork는 Spring Boot를 이용했다.

처음 가장 헷갈렸던 개념은 dto 와 entity 이다.

Entity

entity 는 db 와 1:1 매칭되는 매우 민감한 class 이기때문에 값을 함부로 수정하지 않고 사용자에게 반환하지 않도록 한다고 한다.

따라서 entity 에는 getter만 존재할 뿐 setter 는 존재하지 않는다.

두 값을 비교할때는 Id(PK)를 기준으로 한다.

DTO

DTO는 각 계층에 데이터 이동시에 이용하는 class 이며 getter/setter 둘다 가질 수 있다.
데이터 교환만을 위해 사용하므로 getter/setter 외의 로직을 가지고 있지 않는다.

VO

불변성이라는 원칙이 있고 값을 비교할때는 두 객체가 가지고있는 값이 동일한지를 본다.
또한, getter외의 로직을 가질 수 있게된다.

https://user-images.githubusercontent.com/33862991/116250387-a46ec800-a7a8-11eb-8368-8e2df28225fa.png

따라서 Data 를 이동시킬때는 반드시 DTO를 이용한다 라고 생각했지만.....

따로 그렇지만은 않다고 한다. service 에서 반환하는 data 는 Entity 여도 된다라고 하기도하고... 참 애매하다. 일단 entity 내부의 정보는 사용자에게 반환하면 안된다고 알게됐고 이것만은 지키겠다고 생각했다.

따라서 Contoller에 getMapping 되어있는 메소드들은 DTO를 반환하도록 했다.

gradle

gradle 은 spring boot 에서 maven 대신 사용하는 tool 이다.
maven 처럼 dependencies 로 lib 를 불러오는것은 동일하지만 script 를 기반으로 project 나 build 를 관리할 수 있다는 장점이 있다.

근데 아직 build 나 project를 script 기반으로 다뤄본적은 없다.

profile
독자보다 필자를 위해 포스팅합니다

0개의 댓글