ソフトウェアエンジニアリングにおいて、データマッパーパターンはアーキテクチャパターンです。これは、マーティン・ファウラーが2003年の著書『Patterns of Enterprise Application Architecture』で命名しました。[ 1 ]このパターンに準拠するオブジェクトのインターフェースには、データストア内のドメインエンティティタイプを表すオブジェクトを操作する、Create、Read、Update、Deleteなどの関数が含まれます。
データマッパーは、永続データストア(多くの場合リレーショナルデータベース)とメモリ内データ表現(ドメイン層)の間で双方向のデータ転送を実行するデータアクセス層です。このパターンの目的は、メモリ内表現と永続データストアを互いに、そしてデータマッパー自体からも独立させることです。これは、永続データストアにきれいにマッピングされないドメイン層のデータに対して厳密なビジネスプロセスをモデル化して適用する必要がある場合に役立ちます。[ 2 ]この層は、データ転送を実行する 1 つ以上のマッパー(またはデータアクセスオブジェクト)で構成されます。マッパーの実装は範囲が異なります。汎用マッパーはさまざまなドメインエンティティタイプを処理し、専用マッパーは 1 つまたは少数を処理します。
実装
この概念の実装例は、多くのプログラミング環境向けの様々なフレームワークに見られる。
Node.js / TypeScript
- Bookshelf.jsライブラリ
- TypeORMライブラリ
- Massive.jsライブラリ
- プリズマ
- Objection.jsライブラリ
- MikroORMライブラリ
- RDFデータソース用LDkitオブジェクトグラフマッパー(OGM)
PHP
- Atlas ORM(データマッパー、テーブルデータゲートウェイ、クエリビルダー、およびPDOラッパー)[ 3 ]
- Doctrine2オブジェクトリレーショナルマッパー (ORM) とデータベース抽象化レイヤー[ 4 ]
- Cycle ORM(PHP DataMapper ORMおよびデータモデリングエンジン)[ 5 ]
- CakePHP ORM(PHP DataMapper ORM、クエリビルダー、およびPDOラッパー)
ルビー
- DataMapper ライブラリ(実際にはこのライブラリはActive Recordデザインパターンを実装しており、後継のDataMapper 2(現在はROM)は、その名の由来となったデザインパターンを実際に実装することを目的としていました)
参考文献
- ↑ファウラー、マーティン(2003)。エンタープライズアプリケーションアーキテクチャのパターン。アディソン・ウェスリー。ISBN 978-0-321-12742-6。
- ↑ 「Active RecordとData Mapperの違いは何ですか?」
- ↑ 「Atlas ORM – Atlas」。
- ↑ "Doctrine2 と ActiveRecord – Doctrine2" . Doctrine2 . 2013-07-21 のオリジナルからアーカイブ済み. 2013-04-02に取得.
- ↑ "Cycle ORM – Cycle" . GitHub .
- ↑ 「スタックオーバーフロー– DBIx」。