SQLの自動生成機能をもたないわけ
Domaは検索系のSQLを自動生成する機能(APIで組み立てる機能)をもっていません。ではどうするかというと、外部化したSQLファイルとDaoのメソッドをマッピングし、ファイルに記述されたSQLを実行します。外部化したファイル内では、条件分岐をサポートし部分的に動的なSQLを組みたてられるようにしています。
Domaが検索系のSQLを自動生成する機能をもっていないのは、なぜかというと、
- 自動で生成できるのは比較的単純なSQLだけであり表現力豊かなSQLは生成できない
- 自動生成をアプリから制御するための仕組みが複雑になりがち
- 自動生成できないSQLはどうしてもでてくるが、そのとき自動生成だけでなんとか解決しようしてトラブルになりやすい
- 自動生成を使うべきかSQL指定の方法を使うべきか人によって判断がまちまちになって設計がぶれやすくなる
- ファイルに外部化されたSQLのほうが仕様書と突き合わせて管理しやすい
と考えているからです。
SQLは便利で気に入っているのですが、その良いところを活かしやすいようにしています。