読者です 読者をやめる 読者になる 読者になる

なっく日報

技術やら生活やらのメモ

DataMapperとTableDataGatewayの違いって何ですのん

チームでそんな話題が出てきたので調べてみました。

DataMapperとは?

PofEAA's Wiki - DataMapper をご参照ください。

TableDataGatewayとは?

PofEAA's Wiki - TableDataGateway をご参照ください。

違いは何?

下記2つの記事が参考になりました。

stackoverflow.com

OTN Japan - 今だからデータ・アクセスを真剣に考える! 第2回

要は、

// DataMapper
var user = new User({
  name: '山田', 
  age: 25
});
UserDataMapper.insert(user);
user.age = 30;
UserDataMapper.update(user);

// TableDataGateway
UserGateway.updateAge(userId, 30);

的な。

SQLとかを隠蔽するのは同じだけど、エンティティのプロパティに直接触るかどうかが、ぱっと見て違うところ。

DataMapperはCRUDしか操作を持たないが、TableDataGatewayはいっぱいメソッドが生えるイメージ。

なおJavaでいうところのDAOは≒TableDataGatewayという認識で大丈夫なようです。