在ssh框架中,spring控制事务,它控制对数据库的commit,rollback等。
以下是我的spring配置文件。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 用来创建数据源的代理
<tx:advice id="txAdvice" transaction-manager="txManager"> 表明用对于insert开始的方法,支持当前事务,如果没有,则创建事务。事务有很多种,如嵌入式事务等。
<aop:config> 切面定义
<!-- 工厂 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<!-- 配置事物管理器 -->
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 定义事物的传播方式 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 定义包含这些方法的类 -->
<aop:config>
<aop:pointcut id="mycut"
expression="execution(* com.business.service.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="mycut" />
</aop:config>