なっく日報

技術やら生活やらのメモ

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

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

DataMapperとは?

http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?DataMapper をご参照ください。

TableDataGatewayとは?

http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?TableDataGateway をご参照ください。

違いは何?

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

stackoverflow.com

http://otndnld.oracle.co.jp/columns/arai-semi/data_access/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という認識で大丈夫なようです。