spring配置事物四种方式
第一种手动配置
Transaction transaction = session.beginTransaction();
session.update(target);
transaction.commit();
transaction.rollback();
session.close();
第二种spring.xml配置hibernateTemplate自动模式
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="qq" /> </bean>
第三种注解事物
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="qq"></bean>
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>//作用是注解事物
@Transactional //类级的注解、适用于类中所有的public的方法
@Transactional(propagation = Propagation.NOT_SUPPORTED)不需要事务方法前加
第四种面向切面xml事物
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="qq"></bean>
<aop:aspectj-autoproxy proxy-target-class="true" />//激活自动代理功能
<aop:config> //定义一个切面,并将事务通知和切面组合
<aop:pointcut expression="execution(* com.dao.impl.*.*(..))" id="trPointcut"/>
<aop:advisor advice-ref="trcut" pointcut-ref="trPointcut"/><
</aop:config>
<tx:advice id="trcut" transaction-manager="transactionManager"> //定义事务通知
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>//对增删该设置
<tx:method name="*" propagation="REQUIRED" read-only="true"/>//查询不用设置
<tx:method name="*" propagation="REQUIRED"/>//对所有方法设置
<tx:attributes>
<tx:advice>