您好,欢迎访问三七文档
基本的六种事务传播:1.PROPAGATION_REQUIRED:如果存在一个事务,则支持当前事务。如果没有事务则开启2.PROPAGATION_SUPPORTS:如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行3.PROPAGATION_MANDATORY:如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。4.PROPAGATION_REQUIRES_NEW:总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。5.PROPAGATION_NOT_SUPPORTED:总是非事务地执行,并挂起任何存在的事务。6.PROPAGATION_NEVER:总是非事务地执行,如果存在一个活动事务,则抛出异常Spring配置声明式事务:*配置SessionFactory*配置事务管理器*事务的传播特性*那些类那些方法使用事务2、编写业务逻辑方法*继承HibernateDaoSupport类,使用HibernateTemplate来持久化,HibernateTemplate是HibernateSession的轻量级封装*默认情况下运行期异常才会回滚(包括继承了RuntimeException子类),普通异常是不会滚的*编写业务逻辑方法时,最好将异常一直向上抛出,在表示层(struts)处理*关于事务边界的设置,通常设置到业务层,不要添加到Dao上!--配置SessionFactory--beanid=sessionFactoryclass=org.springframework.orm.hibernate3.LocalSessionFactoryBeanpropertyname=configLocationvalueclasspath:hibernate.cfg.xml/value/property/bean!--配置事务管理器--beanid=transactionManagerclass=org.springframework.orm.hibernate3.HibernateTransactionManagerpropertyname=sessionFactoryref=sessionFactory//bean!--事务的传播特性--tx:adviceid=txAdvicetransaction-manager=transactionManagertx:attributestx:methodname=add*propagation=REQUIRED/tx:methodname=del*propagation=REQUIRED/tx:methodname=modify*propagation=REQUIRED/tx:methodname=*propagation=REQUIREDread-only=true//tx:attributes/tx:advice!--哪些类哪些方法使用事务--aop:configaop:pointcutexpression=execution(*com.biped.service.*.*(..))id=transactionPC/aop:advisoradvice-ref=txAdvicepointcut-ref=transactionPC//aop:config!--普通IOC注入--beanid=userManagerclass=com.biped.service.UserManagerImplpropertyname=logManagerref=logManager/propertyname=sessionFactoryref=sessionFactory//beanbeanid=logManagerclass=com.biped.service.LogManagerImplpropertyname=sessionFactoryref=sessionFactory//bean
本文标题:事务的传播特性
链接地址:https://www.777doc.com/doc-2735845 .html