1장 ~ 3.4장
@SpringBootApplication이 있는 위치부터 설정을 읽어가기 때문에 항상 프로젝트의 최상단에 위치해야 한다.
자동생성 해줘서 몰랐음ㅎ
Entity의 무분별한 변화를 막기 위해 Entity에서는 절대 Setter를 만들지 않는다.
EntityRepository와 Entity는 아주 밀접한 관계이고 Entity는 EntityRepository없이는 제 역할을 할 수 없다. 또한 프로젝트 규모가 커져 MSA를 적용한다면 도메인 별로 프로젝트를 분리해야 하기 때문에 Repository와 Entity는 같은 위치에 놔두는게 좋다.
지금까지 서비스 레이어의 목적은 비즈니스 로직을 처리하는 계층이라 생각했다. 하지만 서비스 레이어는 트랜잭션, 도메인 간 순서 보장의 역할을 한다. 비즈니스 로직은 Domain에서 처리한다.
기존처럼 서비스 레이어에서 비즈니스 로직을 처리한다면 서비스 레이어가 무의미하며(? 이건 왜 인지 모르겠다.) 객체란 단순히 데이터 덩어리 역할(이건 알겠다)만 하게된다.
Domain에서 비즈니스 로직을 처리한다면 각자 해당하는 로직을 처리하고 서비스 레이어는 트랜잭션과 도메인 간의 순서만 보장한다.