JPA 모델과 도메인 모델은 다른 것이라 볼 수 있나?
우선 JPA 모델은 DB에서 조회한 값을 자바 객체로 관리하는 모델이라고 볼 수 있다.
그리고 도메인 모델은 그것과 상관 없이 시스템을 운영하는데 필요한 도메인 모델을 선정하고 그거에 대한 구현을 코드 레벨까지 가져오는 것을 뜻한다.
그럼 이 두 개의 모델을 분리해야 하는가?
이렇게 될 경우 Domain 자체는 순수 객체로 되어 있어서 나중에 데이터를 저장하는 모듈을 변경 하는 경우 매우 편리하다.
레거시 DB가 존재하는 경우, 도메인 모델을 만들어서 로직을 적용할 수 있음
도메인 모델 자체가 복잡하여 DB에서 조회 하여 간단하게 매핑이 되지 않는 경우
<aside> 💡
JPA 기술의 정체성 Java에서 사용하는 ORM, 즉 패러다임이 다른 관계형 DB와 객체지향 모델의 불일치를 해결 기술 JPA의 기술 목표는 DB를 관리하기 위해 자바 도메인 모델을 활용할 수 있는 객체/관계 매핑을 제공하는 것 이다.
</aside>
그렇다면 JPA 모델과 도메인 모델을 분리해야 할까?
대부분의 데이터 모델과 도메인 모델이 다르지 않음
도메인 모델과 엔티티 모델을 분리하면 프로젝트의 복잡도가 높아지고 관리가 어려우며 사실 도메인 계층과 데이터 계층을 분리하는 것은 매우 드물다.