ひがやすを技術ブログ

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

S2 Hibernate Plugin

S2自身をコンパクトに保ちながら、機能追加をしていくために
Plugin形態を取ろうと思ってます。
PluginはS2自身から配布も切り離されます。
その第一弾は、S2 Hibernate Plugin。
意外に思う方も多いかもしれません。
S2Daoをやらないというわけではなく、
O/Rマッピングツールの中で、最も評価が高く
ユーザも多いであろうHibernateをS2でサポートすることは
ニーズが高いと思ったためです。
使い方はこんな感じ。
EmployeeDao.java


interface EmployeeDao {
public Employee getEmployee(String name);
}
EmployeeDaoImpl.java

class EmployeeDaoImpl extends AbstractHibernateDao
implements EmployeeDao {

EmployeeDaoImpl(SessionFactory factory) {
super(factory);
}
public Employee getEmployee(String name) {
return getSession().find(
"from Employee where name = ?"
name, Hibernate.STRING);
}
}

AbstractHibernateDao.getSession()で提供されるセッションは、
openもcloseも必要ありません。S2のJTAに連動します。
そのため、同一DAOのメソッド間でも同一トランザクション
あれば、セッションは維持されますし、異なるDAO、異なるサービス間でも
同一トランザクションであれば、セッションは維持されます。
SQLを意識したくない場合は、HibernateSQLを自前で
コントロールしたい場合は、DbUtils,S2Daoのような
使い分けになるのかなぁと思います。