[Seasar-user:3308] [S2DAO] 要望 QUERYファイル、他

松山 大樹 [E-MAIL ADDRESS DELETED]
2006年 3月 2日 (木) 14:23:33 JST


 松山です。

 おかげさまで、Seasar2 + S2Dao + S2JSF で作成したシステムが、
先月無事リリースし、順調に稼働しています。

 S2DAO での要望です。

 1.QUERY ファイル
 現在、SQLアノテーションはSQLファイルとして配置することができ
ますが(順序としてはSQLファイルが、SQLアノテーションとして記述
することができる、でしょうが)、QUERYアノテーションもQUERY ファイル
として配置することができないでしょうか?

 S2DAO のサンプルになっている、EMP とDEPT テーブルを例に取ると、
 N:1 の結合を行うとき、SQLファイル(or アノテーション) では、
------------------------------------------
select * from emp, dept
 where emp.deptno = dept.deptno(+)
   and emp.deptno = /*deptno*/99
------------------------------------------
 のような記述をすると、dept の内容が取得できません。dept の
内容を取得しようとすると、
------------------------------------------
select emp.*, dept.dname dname_0, dept.loc loc_0 from emp, dept
------------------------------------------
 のように記述する必要があります。dept のカラム数が多いとき、
かなり面倒です。

 同じことをQUERY アノテーションで行う場合、テーブルの結合は
S2DAO がやってくれるのですが、where句に与える条件が長くなった
場合、外部ファイルで管理した方がソースがきれいになる場合もあると思います。
 個人的に、
 public String getEmployeeByDeptno_QUERY = "/*IF deptno != null*/deptno = /*deptno*/123\n"+
 "  /*ELSE*/ 1=1\n"+
 "/*END*/";
 のような書き方がきらいなだけなのですが。

 これは、*.query ファイルなどで外部におけるといいな、と。
 SQL単体でのテストがしやすいように、where句より前は無視してくれると、なおうれしいです。

 2. SQL文を実行時に与える機能
 S2DAO などのO/R マッピングツール導入前は、Java のソースの中で、
---------------------------------------------
String sql = "Select emp.ename, emp.deptNo From emp";
sql += " where sal between " + salFrom + " and " + salTo;
switch(hoge.getHoge()) {
	case 100:
		sql += " and comm < 100000";
		break;
	case 200:
		sql += " and comm between 100001 and 200000";
		break;
	deafult:
		break;
}
if(hoge.getHogeHoge().equals("aaa")) {
	sql += " order by comm desc ";
} else if(hoge.getHogeHoge().equals("bbb")) {
	sql += " order by sal ";
} else {
	sql += " order by empno";
}
---------------------------------------------
 のように、SQL文を生成することをよくやっていたのですが、
このように生成したSQL文を、S2DAO に渡して、結果を取得できると、
過去の資産を生かしやすいのでは、と思います。
 また、SQL文そのものをユニットテストで検証しなければいけない
ような場合などにも、有効ではないかと(あまりないと思いますが)。

-- 
::: 株式会社ワウワウ・コミュニケーションズ http://www.wowcom.co.jp/
:::   ITシステム・インテグレートDiv.
:::  Web・マーケティング&コマンドセンターUnit.
:::   松山 大樹 - [E-MAIL ADDRESS DELETED]





Seasar-user メーリングリストの案内