spring

entity와 domain, dto

kimkim615 2024. 7. 18. 02:38

Q. Entity란

A. 데이터베이스 테이블과 매핑되는 자바 객체 , DTO를 사용해서 데이터를 주고 받는다

엔티티는 테이블과 달리 데이터베이스나 SQL상 실제로 존재하는 것이 아닌, 일종의 개념이다. 반면 테이블은 데이터베이스나 SQL에 실제로 존재하며 물리적인 구조를 지니고 있다


 

Q. domain이란

A. 사용자가 이용하는 앱의 기능, 회사의 비즈니스 로직을 정의하고 있는 영역이다

도메인 클래스는 엔티티를 포함할 수 있지만, 엔티티 외에도 비즈니스 규칙, 값 객체, 서비스 등을 포함할 수 있다.

domain 모델(객체)은 내가 개발하고자 하는 영역을 분석하고, 그 분석의 결과로 도출된 모델(객체)라고도 할 수 있다.

이렇게 도출한 도메인 모델은 크게 Entity와 Value로 구분할 수 있다.


 

Q. 왜 Entity 패키지와 Domain 패키지를 다르게 사용하나요?

  • Entity 패키지: 데이터베이스 매핑을 중심으로 하는 경우, 엔티티 클래스만을 entity 패키지에 모아서 사용합니다. 이는 데이터베이스와의 상호작용을 명확하게 분리하기 위해서입니다.
    • 장점: 데이터베이스와 관련된 클래스들을 한 곳에 모아둠으로써 관리가 용이합니다.
  • Domain 패키지: 애플리케이션의 비즈니스 로직을 중심으로 구조화하고자 하는 경우, 더 포괄적인 domain 패키지를 사용합니다. 이는 애플리케이션의 비즈니스 로직과 데이터베이스 매핑을 포함한 모든 도메인 관련 클래스를 함께 관리할 수 있게 합니다.
    • 장점: 애플리케이션의 비즈니스 로직을 중심으로 구조화되어, 비즈니스 로직을 쉽게 추적하고 관리할 수 있습니다.

Q. DTO란

A. DTO는 Entity의 변경을 최소화하기 위해 탄생했다.

Entity는 데이터베이스 테이블이랑 완전히 똑같고, DTO는 일부 정보만 사용한다