해당 Project 를 진행하면서 어려운 점이 있었는데
어떤 기술을 사용할것이고 어떻게 적용할것인지 였다.
orm 을 mybatis로 이용하고 spring legacy 를 이용해 만들었다면 좀 더 쉽게 했겟지만
이왕하는거 처음써보는걸 이용해봐야겟다 싶어 orm 은 JPA frameWork는 Spring Boot를 이용했다.
처음 가장 헷갈렸던 개념은 dto 와 entity 이다.
entity 는 db 와 1:1 매칭되는 매우 민감한 class 이기때문에 값을 함부로 수정하지 않고 사용자에게 반환하지 않도록 한다고 한다.
따라서 entity 에는 getter만 존재할 뿐 setter 는 존재하지 않는다.
두 값을 비교할때는 Id(PK)를 기준으로 한다.
DTO는 각 계층에 데이터 이동시에 이용하는 class 이며 getter/setter 둘다 가질 수 있다.
데이터 교환만을 위해 사용하므로 getter/setter 외의 로직을 가지고 있지 않는다.
불변성이라는 원칙이 있고 값을 비교할때는 두 객체가 가지고있는 값이 동일한지를 본다.
또한, getter외의 로직을 가질 수 있게된다.
따라서 Data 를 이동시킬때는 반드시 DTO를 이용한다 라고 생각했지만.....
따로 그렇지만은 않다고 한다. service 에서 반환하는 data 는 Entity 여도 된다라고 하기도하고... 참 애매하다. 일단 entity 내부의 정보는 사용자에게 반환하면 안된다고 알게됐고 이것만은 지키겠다고 생각했다.
따라서 Contoller에 getMapping 되어있는 메소드들은 DTO를 반환하도록 했다.
gradle 은 spring boot 에서 maven 대신 사용하는 tool 이다.
maven 처럼 dependencies 로 lib 를 불러오는것은 동일하지만 script 를 기반으로 project 나 build 를 관리할 수 있다는 장점이 있다.
근데 아직 build 나 project를 script 기반으로 다뤄본적은 없다.