[Seasar-user:381] Re: メールアーカイブ
B isid.co.jp Yasuo Higa
higa
2004年 3月 2日 (火) 16:27:15 JST
<[E-MAIL ADDRESS DELETED]> の、
"[Seasar-user:380] Re: メールアーカイブ" において、
"Masataka Kurihara <[E-MAIL ADDRESS DELETED]>"さんは書きました:
ひがです。
> 栗原まさたかです。
>
> 最近もハンドルってあるんでしょうか(^^)。
>
自由で良いみたい。
> おかげさまでリストを流し読み終えたところですが、い
> まのSeasar2の流れは年明けてからなんですね。すごくタイ
> ミングがあってうれしいです。ちょうど IoCコンテナ探し
> もしくは自作検討をしていたところです。
>
> いま、とっても知りたいのは、AOPで実装するというDAO
> の仕組みです。自分なりに作ろうかと思っていた像がうす
> らぼんやりとあったので、ひがさんのアプローチを知りた
> い〜。
>
DAOの仕様は、インターフェースで定義、実装はXML、
両者をAOPで結びつけようというわけです。
XML部分は、Sqlet(http://homepage3.nifty.com/seasar/doc/nazuna-sqlet.html)
がベースになってます。
interface EmployeeDao {
public List getEmployees();
public Employee getEmployeeByEmpno(int empno);
public List getEmployeeBySalaryAndJob(
BigDecimal salary, String job);
public int updateEmployee(Employee emplyoee);
}
EmployeeはJavaBeans。コードは省略。
EmployeeDao.xml
<dao>
<view name="EmployeeView">
SELECT ... FROM emp
</view>
<query name="getEmployees">
<resultSetHandler class="BeanListHandler">
<property name="beanClassName">'hoge.entity.Employee'</property>
</resultSetHandler>
${EmployeeView}
</query>
<query name="getEmployeeByEmpno">
<arg name="empno"/>
<resultSetHandler class="BeanHandler">
<property name="beanClassName">'hoge.entity.Employee'</property>
</resultSetHandler>
${EmployeeView}
WHERE empno = ?{empno}
</query>
<query name="getEmployeeBySalaryAndJob">
<arg name="salary"/>
<arg name="job"/>
<resultSetHandler class="BeanListHandler">
<property name="beanClassName">'hoge.entity.Employee'</property>
</resultSetHandler>
${EmployeeView}
<where>
<and condition="salary ge 0">salary ge ?{salary}</and>
<and condition="job is not null">job = ?{job}</and>
</where>
</query>
<query name="updateEmployee">
<arg name="employee"/>
UPDATE emp SET empno = ?{employee.empno}, ...
WHERE empno = ?{employee.empno}
</query>
</dao>
コンポーネントの定義
<component class="hoge.dao.EmployeeDao">
<aspect>
<component class="org.seasar.framework.dao.advices.DaoAdvice">
<!-- DataSourceコンポーネントの名前。他で定義済み -->
<arg>jdbc/default</arg>
<!-- XMLのリソースパス -->
<arg>'hoge/dao/EmployeeDao.xml'</arg>
</component>
</aspect>
</component>
まだ、素案なのでいろいろ突っ込んでください。
ResultSetHandlerの仕様は、DbUtilsにあわせようと思ってます。
---
Yasuo Higa <[E-MAIL ADDRESS DELETED]>
INFORMATION SERVICES INTERNATIONAL-DENTSU,LTD.
Seasar-user メーリングリストの案内