데이터 매퍼 패턴

소프트웨어 공학에서 데이터 매퍼 패턴(data mapper pattern)은 아키텍처 패턴의 하나다. 마틴 파울러가 2003년에 펴낸 저서 《기업 애플리케이션 아키텍처 패턴》(Patterns of Enterprise Application Architecture)에서 이 이름을 명명했다. 이 패턴을 따르는 객체의 인터페이스는 데이터 저장소 내의 도메인 엔티티 유형을 나타내는 객체들에 대해 작동하는 생성(Create), 읽기(Read), 갱신(Update), 삭제(Delete)와 같은 함수를 포함한다.

데이터 매퍼는 영구 데이터 저장소(흔히 관계형 데이터베이스)와 인메모리 데이터 표현(도메인 계층) 사이에서 데이터의 양방향 전송을 수행하는 데이터 접근 계층이다. 이 패턴의 목적은 인메모리 표현과 영구 데이터 저장소가 서로 독립적이면서 데이터 매퍼 자체와도 독립성을 유지하도록 하는 것이다. 이는 영구 데이터 저장소와 깔끔하게 매핑되지 않는 도메인 계층의 데이터에 대해 엄격한 비즈니스 프로세스를 모델링하고 강제해야 할 때 유용하다. 이 계층은 데이터 전송을 수행하는 하나 이상의 매퍼(또는 데이터 접근 객체)로 구성된다. 매퍼 구현은 그 범위에 따라 다양하다. 범용 매퍼는 다양한 도메인 엔티티 유형을 처리하며, 전용 매퍼는 하나 또는 소수의 엔티티 유형을 처리한다.

 구현 
이 개념의 구현체는 다양한 프로그래밍 환경을 위한 여러 소프트웨어 프레임워크에서 찾아볼 수 있다.

 Java/.NET 
 마이바티스(MyBatis) 영속성 프레임워크
 하이버네이트(NHibernate) 영속성 프레임워크

 Node.js / TypeScript 
 Bookshelf.js 라이브러리
 TypeORM 라이브러리
 Massive.js 라이브러리
 Prisma
 Objection.js 라이브러리
 MikroORM 라이브러리
 LDkit - RDF 데이터 소스를 위한 객체 그래프 매퍼(OGM)

 PHP 
 Atlas ORM (데이터 매퍼, 테이블 데이터 게이트웨이, 쿼리 빌더 및 PDO 래퍼)
 Doctrine2 객체 관계 매핑(ORM) 및 데이터베이스 추상화 계층
 Cycle ORM (PHP 데이터 매퍼 ORM 및 데이터 모델링 엔진)
 CakePHP ORM (PHP 데이터 매퍼 ORM, 쿼리 빌더 및 PDO 래퍼)

 Perl 
 DBIx

 Python 
 SQLAlchemy 라이브러리
 mincePy 라이브러리

 Ruby 
 DataMapper 라이브러리 (실제로 이 라이브러리는 액티브 레코드 디자인 패턴을 구현했으며, 그 후속작인 DataMapper 2(현재 ROM)는 이름에 걸맞은 디자인 패턴을 실제로 구현하는 것을 목표로 함)

 Elixir 
 Ecto 영속성 프레임워크

 같이 보기 



 각주 

분류:소프트웨어 디자인 패턴
분류:아키텍처 패턴