ひがやすを技術ブログ

電通国際情報サービスのプログラマ

ドメインロジックとSQL

トランザクションスクリプトとは、P of EAA の中で私が作ったパターン名である。リクエストによって処理を行う手続き型のパターンのことだ。プロシージャは必要なデータをすべて読み込み、メモリ上でどの月が必要なのかを探し、それから処理を行うことになる。

ってのが、TransactionScriptなら、くーすとTransactionScriptは、全く違います。
Fowlerは、データベースからデータを取ってくるロジック(SQL)をどんな場合でも同じ物が使えるということに価値を見出しているようです。次のように。

このドメインオブジェクト上であれば、どんな処理でも同じ読み込みロジックが使えるというわけ。つまり、小さなドメインロジックがもっとたくさんあっても、それぞれに読み込みロジックを実装する必要はなく、コードの長さがそこで相殺され、結果的に何ら問題にはならないわけだ

くーすでは、業務ごとにニーズなんか違うんだから、それぞれの業務ごとに、SELECT文は、最適化したものを使います。ある意味、SQLにロジックが埋め込まれているわけですが、RDBMSを使ってパフォーマンスを稼ぐには、それが一番だと思っているわけです。
これが、ドメインオブジェクトではなく、DTOを使うということにもつながってきます。
http://d.hatena.ne.jp/higayasuo/20041010#1097399686
ただし、SQLを毎回手動で書くかというとそれは別で、かなりの場合、S2Daoが自動生成してくれるでしょう。
リソース層にRDBMSを使う限り、SQLの知識は必須です。デザインパターンやP of EAAの習得には熱心だけど、SQLには興味ないなんて人がいるなら、知識のバランスにかけてます。
現場で役に立つということで考えると、まずはSQLを勉強することをすすめます。


後、Fowlerがいってるから正解というのも間違ってます。きちんと、どうしてそれが良いのかを自分なりに説明できるようになるべきだと思います。そうでないと、人は説得できません。