[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 メーリングリストの案内