DataMapperとTableDataGatewayの違いって何ですのん
チームでそんな話題が出てきたので調べてみました。
DataMapperとは?
http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?DataMapper をご参照ください。
TableDataGatewayとは?
http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?TableDataGateway をご参照ください。
違いは何?
下記2つの記事が参考になりました。
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という認識で大丈夫なようです。