IT 사업가란 사람들이 겪는 문제를 분석하고, 이에 맞는 솔루션을 생각하고, 소프트웨어로 구현하는 사람을 의미한다.
사용자의 문세 상황을 인식한다.
문제 상황에 따라 어떤 솔루션을 제공하면 좋은 반응을 얻을 것이라고 가설을 세운다.
가설이 맞다면 결과가 어떤 지표로 반영될 것이라고 가정한다.
가설을 검증할 수 있는 가장 빠른 방법을 생각하고 이를 실험한다.
사용자와 지속적으로 소통하면서 가설의 방향성을 지속적으로 조정, 확장한다.
즉, 사용자의 문제를 해결할 수 있는 해결책(솔루션)을 만들어야 함을 강조한다.
도메인이란 바로 사용자들이 겪는 문제 영역을 의미한다.
그리고 문제 영역이 곧 비즈니스 영역이므로 도메인은 비즈니스 영역을 의미하기도 한다.
(도메인 = 문제 영역 = 비즈니스 영역)
개발자는 도메인을 분석하고, 고객이 겼는 문제를 인지하고, 이에 맞는 도메인 솔루션을 개발해 줄 수 있어야 한다.
개발자는 도메인 애플리케이션 개발을 한다는 것을 명심해야만 한다.
애플리케이션의 본질은 도메인이므로 도메인 개발자가 되어야만 한다.
구분하기 전략
역할에 따라 도메인 모델과 영속성 객체를 나눈다.
통합하기 전략
도메인 모델과 영속성 객체를 하나의 클래스로 관리한다.
장점
하나로 통합해서 개발속도가 매우 빠르다.
단점
클래스의 책임이 눈에 들어오지 않는다.
데이터베이스 위주의 사고를 한다.
만약 JPA를 안쓰고, JdbcTemplate 사용한다면???
@Data
@Entity
public class AccountJpaEntity{
fields ...
public static AccountJpaEntity from(Account account){
AccountJpaEntity result = new AccountJpaEntity();
result.id = account.getId();
result.email = account.getEmail();
result.nickname= account.getNickname();
return result;
}
public Account toModel(){
return Account.builder()
.id(this.id)
.email(this.email)
.nickname(this.nickname)
.build();
}
구분하기 전략은 도메인이 ORM 같은 특정 라이브러리에 의존하지 않게 하기 위해 만들어진 전략이다.
이로써, MyBatis나 JdbcTemplate로 교체가 유연하게 가능하다.