[Seasar-user:10540] [S2DAO]DAO Interfaceのオーバーライドについて

r.m [E-MAIL ADDRESS DELETED]
2007年 9月 14日 (金) 19:49:38 JST


お世話になっております。 水澤です。

現在開発しているもので、複数データソースを扱うアプリケーションがあります。
ITestDao
Test1Dao
Test2Dao

とあり、ITestDaoにはOracleで使用できるSQLが@Queryで記述してあります。
Test1Dao Test2Daoには、メソッドをオーバーライドして、Postgres用のSQL
を記述しております。

interface ITestDao {
    @Query(select sysdate from emp)
    public Date test();
}

interface Test1Dao extends ITestDao  {
    @Query(select current_timestamp from emp)
    public Date test();
}

このとき、
取得したいDAOがTest1Dao の場合
NetMileDaoFactory factory = NetMileDaoFactory.getInstance();
S2Container container = factory.getContainer();
Test1Dao dao = (Test1Dao )container.getComponent(Test1Dao.class);

のように取得し、test()を実行すると
ITestDao のQueryが実行されます。

オーバーライドしても意味はないのでしょうか?
上記のような、異なるDBを扱う場合、いい方法はないでしょうか?
なるべくなら、親インターフェースごしに、対象DAOを取得し、Logic側からは
Oracle Postgres等DBの違いを意識しないように作りたいと思っています。
改修する余地があるか等、分かる方いらっしゃいましたら、ご教授願い致します。



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