SQLのツールとの連動
ひがさんのところで、Seasar2のデータ層のソリューションにHibernateをまずリリースしようか考えていることを書かれてます。私はSQLをごりごりごりごり書きたいごりごり。
未来に使ってくれる人より、今使ってくれる人を大事にしたいため、
S2Daoを先にリリースします。(^^;
SQL文の外部化ですが、バインド変数や動的SQL文の生成などを考えると
生のSQL文をそのままXMLには記述できないと思います。
なんかツール(antなど)を作ってXMLから生のSQLをはかせ、
そいつをSQL*Plusなどで実行する手もありますが、
ちょっとめんどくさい。
TapestryのSQL版として、SQL*Plusなどで直接実行できるが
実行時には動的に値が変わるなんてことができるとうれしい。
そこで考えてみました。
のようにSQL文を記述します。SQL*Plusではそのまま実行できます。
SELECT empno, ename FROM emp
--S2 7788 -> ?{empno}
WHERE empno = 7788
S2Daoが実行するときには、--S2コメント分を見つけると次の行の
該当する文字列をバインド変数に置き換えて、引数のempnoを
バインドして実行します。
S2Daoは次のように解釈します。
SQLツールでそのまま実行できるというのがコンセプトで、
SELECT empno, ename FROM emp
WHERE empno = ?{empno}
SQLデザイナ(?)と開発者のスムースな分業が可能になります。