-Seasar2のHibernate対応 + S2Daoへの想い(2)

未来に使ってくれる人より、今使ってくれる人を大事にしたいため、 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を バインドして実行します。

from ひがやすおの日記2004/03/19
恐縮です。SQLごりごり派が多数かはわかりませんが、リリース即使うという点では自信があります。
なるほど。SQLコメントでSQLデザイナーとプログラマーで分業をやるという。悪乗りしてTapestry的ならこっちか?

SELECT empno, ename FROM emp
 WHERE empno = /*S2*/7788/*?{empno}*/

とか?トークン内部の一部置き換えはできなくなっちゃいますけど。「--」コメントだと、まとめてやれるとうれしい。想像妄想膨らむS2Daoですね。

 --S2 'masataka' -> ?{userid}, 'pass' -> ?{password}

このアイディア、前者のほうちょっと見通しがよろしくないという指摘ありつつテーブルに載ってるようです。よかったよかった。