엔티티(Entity)의 중복적 의미와 구분 방법
엔티티(Entity)는 프로그래밍 및 데이터베이스 설계에서 자주 쓰이는 개념이지만, 문맥에 따라 여러 가지 의미를 가지고 있습니다. 구글에 검색해도 다양한 의미로 정리되어 있습니다. 각각의 개념을 명확히 이해하고 혼동하지 않도록 구분하여 정리할 필요가 있습니다.

엔티티의 종류
영속성 엔티티
- 데이터를 영구적으로 저장하고 관리하기 위해 DB 테이블과 직접 매핑 되는 객체
- JPA나 Hibernate 같은 ORM 기술에서 사용이 됩니다.
도메인 엔티티
- 특정 도메인 내에서 비즈니스 규칙과 로직을 중심으로 정의되는 객체
- ddd에서 사용됩니다.
ERD(개체 관계 모델)의 엔티티
- 데이터베이스를 설계하는 과정에서 정보를 저장하거나 관리해야 할 대상(개체)
- ERD(Entity-Relationship Diagram)에서 사각형으로 표현되는 그 것 맞습니다.
📌 도메인 엔티티와 영속성 엔티티를 분리하는 이유
주 목적은 비즈니스 로직과 데이터베이스 기술을 서로 독립적으로 유지하여, 시스템의 유연성과 유지보수성을 극대화하기 위함입니다.
문제 상황
- 서비스 계층에서 JPA의 영속성 엔티티를 도메인 엔티티로 직접 사용하면, 데이터 접근 기술(JPA)에 강하게 의존하게 됩니다.
- 만약 프로젝트의 요구사항 변경으로 데이터 접근 기술이 JPA에서 MyBatis로 변경된다면 서비스 계층까지 영향을 줍니다.