SQLファイルの作り方
Domaは、検索系のSQLについては自動生成しないというポリシーを持っています(更新系SQLについては自動生成と手動生成どちらもサポートしています)。理由は以前書いたとおりです。というわけで、SQLは検索系のDaoメソッドごとにSQLファイルに記述する必要があります。SQLファイルつくるの面倒くさいと思うかもしれませんが、Doma-Gen(http://doma.seasar.org/extension/doma_gen.html)とDoma Tools(http://doma.seasar.org/extension/doma_tools.html)を使えば苦になりません。
今日は、SQLとSQLを格納するファイルを作成する手順を紹介したいと思います。以下、Doma-GenとDoma Toolsの設定が済んでいるものとして説明します。設定方法については、それぞれのリンク先を参照してください。
まず、一番最初にDoma-Genを使ってDBから以下のものを生成しておきます(DBの定義が変わらなければ最初の一度だけ、定義が変わったらそのたびごとに再生成します)。
ここで注目したいのはSQLファイルです。例えば、ADRESSテーブルがあるとすると、次のようなSQLが生成されます。
select ADDRESS_ID, STREET, VERSION from ADDRESS where ADDRESS_ID = /* addressId */1
テーブルのすべてのカラムが展開されているので、これをベースにすればいいわけです(要するにコピペ元)。
いま、ADDRESS_IDカラムではなくSTREETカラムを条件にした新しい問い合わせが必要だとします。この場合、次の手順でSQLとSQLを格納するファイルを作成します。
- まず、Daoインタフェースにメソッドを定義します。
- 次に、Doma Toolsの機能を使って、メソッドに対応するSQLファイル(中身は空)を自動生成します。具体的には、メソッドにカーソルを合わせて右クリックして「Jump to SQL File」を実行します。
- そして、SQLをSQLのツール(Oracle SQL Developer、SQL Server Management Studioなど)を使って作成します。その際、Doma-Genで生成されたSQLをベースとします。
- 最後に、作成したSQLをSQLファイルにコピペします。保存すれば、Doma ToolsからaptがキックされSQLが検証されます。
最近のSQLのツールは、テーブル名やカラム名の保管をしてくれるので、SQLを編集しやすいです。ツールで実行すればすぐにSQLが正しいか確認できますし、DomaのSQLファイルはそのまま実行できる形式をとっているので、ツールを使わない手はないです。
ひとつ注意点ですが、SQLファイルを外部のツールに関連付けて直接開いて編集するのは避けてください。その場合、SQLファイルの変更をDoma Toolsが検知できないからです。SQLはEclipse上のエディタで編集するようにしてください(EclipseのSQL用のプラグインを使う分には大丈夫だと思います)。
ここで紹介したのはお奨めの手順です。自動生成系のツールが嫌いな場合や規模が小さい場合は、Doma-Genを使わないという選択肢もありです。でも、Doma Toolsはぜひ使ってください。これを使わないとSQLファイルを保存したときにaptが起動しないので、コンパイル時チェックが弱くなってしまいます。Doma ToolsはSQLファイルとDaoの間の相互遷移もサポートしているので便利だと感じてもらえると思います。