Spring+Hibernateのセッション管理
ここで書いた話なんですけどSpringのデフォルトでのセッション管理を私が理解していなかっただけでした。
HibernateDaoSupport#getHibernateTemplate()を使っているとそこでSessionのOpen/Closeをしているから
ドメインモデルが分離オブジェクトになってしまっているんですね。
サービスの単位でHibernateのsessionをOpen/Closeさせるように以下のように設定してサービスでドメインモデルのsetterを呼んで値を修正して
サービスを抜けたタイミングでupdate文が発行されることを確認しました。
<bean id="myHibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <bean id="customerService" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>com.pragmaticengine.test.springhibernate.session.service.CustomerService</value> </property> <property name="interceptorNames"> <list> <value>myHibernateInterceptor</value> <value>customerServiceTarget</value> </list> </property> </bean> </pre>