<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sFactory" />
</property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="tx" expression="execution(* org.ymm.services.LoginService.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="tx" />
</aop:config>
Spring中进行事务管理也是利用AOP(面向切片编程)的方式,spring在通过拦截器,加载事务.
bean是创建了一个事务管理,
tx是对拦截切面的描述
aop是配置一个切面
当我们配置完了,最重要的是得到spring创建的当前CurrentSession
<!-- <prop key="hibernate.current_session_context_class">thread</prop> -->
<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate3.SpringSessionContext</prop>