ひがやすを技術ブログ

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

SQLのツールとの連動

ひがさんのところで、Seasar2のデータ層のソリューションにHibernateをまずリリースしようか考えていることを書かれてます。私はSQLをごりごりごりごり書きたいごりごり。

未来に使ってくれる人より、今使ってくれる人を大事にしたいため、
S2Daoを先にリリースします。(^^;
SQL文の外部化ですが、バインド変数や動的SQL文の生成などを考えると
生のSQL文をそのままXMLには記述できないと思います。
なんかツール(antなど)を作ってXMLから生のSQLをはかせ、
そいつをSQL*Plusなどで実行する手もありますが、
ちょっとめんどくさい。
TapestrySQL版として、SQL*Plusなどで直接実行できるが
実行時には動的に値が変わるなんてことができるとうれしい。
そこで考えてみました。


SELECT empno, ename FROM emp
--S2 7788 -> ?{empno}
WHERE empno = 7788
のようにSQL文を記述します。SQL*Plusではそのまま実行できます。
S2Daoが実行するときには、--S2コメント分を見つけると次の行の
該当する文字列をバインド変数に置き換えて、引数のempnoを
バインドして実行します。
S2Daoは次のように解釈します。

SELECT empno, ename FROM emp
WHERE empno = ?{empno}
SQLツールでそのまま実行できるというのがコンセプトで、
SQLデザイナ(?)と開発者のスムースな分業が可能になります。