도메인 객체와 entity의 분리

Y37·2023년 3월 16일

도메인 객체

  • 도메인(문제 영역)을 분석한 결과로 도출된 객체
  • 비즈니스 로직을 구현하는 데 사용

entity

  • 데이터 모델링에 사용되는 객체
  • 데이터베이스와 연결된 객체
  • 도메인 객체가 데이터베이스와 상호작용하기 위한 데이터 접근 계층을 제공

도메인 객체와 엔티티를 분리할 경우

도메인 객체는 시스템의 도메인을 모델링하는 데에만 집중하고 데이터베이스와의 상호작용은 엔티티가 담당한다.

  • 유지보수성을 높이고 확장성 측면에서 도움이 된다.
  • 도메인 객체는 데이터베이스와의 의존성이 없기 때문에, 데이터베이스의 변경이 도메인 객체에 영향을 미치지 않아서 시스템이 변경되어도 도메인 객체를 계속 사용할 수 있다.

도메인 객체와 엔티티를 통합할 경우

도메인 객체와 엔티의 구분을 두지 않아 도메인 객체는 엔티티의 데이터를 직접적으로 처리하며 데이터를 저장하고 검색할 때 엔티티의 기능을 사용한다.

  • 비즈니스 로직과 데이터 처리 로직이 더욱 통합되어 있다.
  • 여러 기능을 사용할 수 있다.

무엇이 더 좋을까?

경우에 따라 다를 수 있다.

도메인 객체와 엔티티를 분리하는 것은 모델링을 명확하게 하면서 유지보수성을 높일 수 있고
도메인 객체와 엔티티를 통합하면 코드를 간결하게 만들어 코드 복잡성을 줄이고 개발 시간을 단축시킬 수 있다.

도메인과 엔티티를 분리하면 도메인에서 jpa 오토 세이브 기능과 같은 여러 기능을 쓸 수 없다.

따라서 트레이드 오프 관계일 뿐, 장단점을 생각해서 잘 고민하고 사용해야 할 것 같다.

profile
학습하는 개발자

0개의 댓글