데브허브 | DEVHUB | Nest.js - 20강: TypeORM의 두 가지 패턴 (feat. Active Record vs Data Mapper)Nest.js - 20강: TypeORM의 두 가지 패턴 (feat. Active Record vs Data Mapper)
- TypeORM은 데이터베이스 상호작용을 위한 Active Record와 Data Mapper 두 가지 주요 디자인 패턴을 지원합니다. 🔄
- 두 패턴의 핵심 차이는 데이터베이스 접근 로직을 어디에 두느냐에 따라 구분됩니다. 🗺️
- Active Record는 데이터를 담는 엔티티 객체 자체가 데이터베이스 접근 로직(저장, 조회, 삭제 등)을 포함합니다. 🧠
- Active Record는 코드가 직관적이고 간단하여 소규모 프로젝트에 빠르게 적용하기 좋습니다. 🚀
- Active Record의 단점은 데이터와 DB 로직이 섞여 관심사 분리가 어렵고, 복잡한 로직 추가 시 엔티티 클래스가 비대해지며 테스트가 어려워진다는 점입니다. ⚖️
- Data Mapper는 엔티티(순수 데이터)와 레포지토리(DB 조작 전담 중개자)를 완전히 분리합니다. ✂️
- Data Mapper는 로직과 데이터가 분리되어 대규모 서비스에 적합하며, 유지보수 및 테스트가 용이합니다. 🏗️
- Data Mapper는 Active Record보다 초기 설정 및 코드가 약간 더 복잡할 수 있습니다. ⚙️
- 어떤 패턴이 더 좋다고 할 수 없으며, 만들고자 하는 서비스의 성격에 맞게 선택해야 합니다. 🎯
- NestJS는 유지보수성과 테스트 용이성을 중시하므로 Data Mapper 패턴이 표준적으로 권장됩니다. ✅