ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Seasar2とS2Daoの統合

来週出す予定のSeasar2の次のバージョン(2.4.18)で、S2Daoが統合されます。
正確に言うとS2Daoの後継といわれていた(S2Dao2.0 or S2Persistence)がSeasar2に統合される形です。
今のS2Daoは、そのまま残るし、今後もバージョンアップされていくので、現状のS2Daoユーザは今後も今のS2Daoを安心してお使いください。
目玉は、ManyToOne、OneToMany、OneToOneの完全サポートでしょうか。マッピングの仕方は、JPAとまったく同じです。JPAアノテーションをそのまま使うということです。
関連のLoadingの仕方は、EagerでもLazyでもなく、Fetch Loadingです。JPAでいうfetch join。
Employeeの検索で、Department(departments)も同時に取得する場合は次のようになります。


List employees = jdbcManager.from(Employee.class).join("department").getResultList();
joinは無制限にネストできます。
ページングは、各DBMS固有のより効率的なSQLを使って実行されます。たとえば、PostgreSQLで次のように呼び出したとします。

jdbcManger.from(Employee.class).limit(10).offset(5).getResultList();
これはつぎのようなSQL文になります。

select ... from employee limit 10 offset 5
where句の組み立てもいろいろ面白いのですが、後はリリースを楽しみにしてください。
S2DaoのようにSQL文を明示的に指定することもできますが、自動生成で90%は対応できるんじゃないかなと思っています。