一:声明切面好处是该方法所在类不需要实现任何接口!
<!-- 定义事务管理器,使用适用于Hibernte的事务管理器-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- 模糊匹配需要拦截的方法 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="search*" read-only="true" />
<tx:method name="save*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="update*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="delete*" propagation="REQUIRED"
rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<!-- 切面配置 -->
<aop:config>
<!-- 模糊匹配需要拦截的包 -->
<aop:pointcut id="etAop"
expression="execution(* com.qq.*.model.service.*.*(..)) or execution(* com.qq.common.action.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="etAop" />
</aop:config>
一:元注释好处是配置简单!
<!-- 事务管理器配置, Hibernate单数据源事务 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 使用annotation定义事务 -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
在接口或类的声明处 ,写一个@Transactional.适用于类中所有的public的方法
事物传播行为介绍:
@Transactional(propagation=Propagation.REQUIRED)
如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)
@Transactional(propagation=Propagation.NOT_SUPPORTED)
容器不为这个方法开启事务
@Transactional(propagation=Propagation.REQUIRES_NEW)
不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
@Transactional(propagation=Propagation.MANDATORY)
必须在一个已有的事务中执行,否则抛出异常
@Transactional(propagation=Propagation.NEVER)
必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)
@Transactional(propagation=Propagation.SUPPORTS)
如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.
分享到:
相关推荐
6. **配置Spring事务管理**:有两种方式: - **编程式事务管理**:在Service层的业务方法中手动管理事务的开启、提交和回滚。这种方式灵活,但代码侵入性强,不便于维护。 - **声明式事务管理**:通过在XML配置...
在SSH框架中,Spring是主要负责事务管理的组件,它提供了编程式和声明式两种事务管理方式。 **声明式事务管理**是Spring提供的强大特性,它允许开发者通过配置XML或注解来定义事务边界,无需在代码中显式处理。在...
在事务管理方面,Spring支持编程式和声明式两种方式。编程式事务管理需要在代码中显式地开始、提交、回滚事务,而声明式事务管理则更加灵活,只需在配置文件中声明事务属性,Spring会自动管理事务的生命周期。 在...
SSH框架信息管理系统是一种基于Java技术开发的企业级应用框架,它由Spring、Struts和Hibernate三个开源组件集成而成。这三个框架分别负责不同的职责,Spring作为应用的底层架构,提供依赖注入和面向切面编程的能力;...
这个用户管理系统就是基于SSH框架构建的,旨在提供一个实用的学习平台,帮助开发者熟悉SSH框架的运用。 首先,Struts2是MVC(模型-视图-控制器)设计模式的一种实现,它负责处理用户的请求,控制业务流程,并将数据...
**SSH框架图书管理系统详解** SSH框架,全称为Struts2、Spring、Hibernate的组合,是Java Web开发中常用的一种技术栈。在这个系统中,Struts2负责控制层,Spring负责业务层和依赖注入,Hibernate则处理数据持久化层...
在Spring中配置事务,通常有编程式和声明式两种方式。编程式事务管理需要开发者显式调用开始、提交、回滚等事务方法,而声明式事务管理则更加简洁,只需在配置文件或注解中声明事务属性,如事务的传播行为、隔离级别...
这个"SSH框架 教材管理系统"项目是利用SSH框架实现的一个具体应用,主要用于教育机构进行教材的管理和相关事务处理。下面我们将深入探讨SSH框架的各个组件以及在教材管理系统中的应用。 1. **Struts2**:Struts2是...
2. **灵活的事务管理**:Spring的事务管理支持编程式和声明式两种方式,可以灵活控制事务边界。 3. **便捷的数据访问**:Hibernate使得数据库操作变得简单,通过对象模型可以直接操作数据,无需关心底层SQL语句。 4....
SSH框架,全称为Struts+Spring+Hibernate,是一种常见的Java Web开发开源框架组合。这个框架的集成使得开发者能够在短时间内构建出结构清晰、可复用性强、易于维护的Web应用程序。 Struts是SSH中的MVC(Model-View-...
SSH框架,即Struts+Spring+Hibernate框架,是Java Web开发中的一种流行架构,它将三种技术结合在一起,各自承担不同的职责,共同构建出稳定、高效、易于维护的Web应用程序。 ### Spring在SSH框架中的核心角色 在...
这意味着项目配置了两种数据库适配器,能够灵活切换不同的数据库环境。 在压缩包中的`xproduct`可能是项目的核心模块或主程序入口,包含了整个SSH框架的配置文件、实体类、持久化层(DAO)、业务逻辑层(Service)...
Spring提供两种方式来配置事务管理:一种是通过注解,另一种是通过XML配置。 1. **注解式事务管理**: Spring支持在方法级别使用@Transactional注解来声明事务边界。当标记在类或方法上时,Spring会自动检测并管理...
**SSH框架整合**:在SSH框架集成中,Spring作为核心,负责管理和协调其他两个框架。Struts2的Action类通常会通过Spring进行依赖注入,而Hibernate的SessionFactory也是由Spring管理。此外,Spring可以整合AOP,用于...
除了上述的基本概念和关系映射,SSH框架中的另外两个组件——Spring和Struts,同样至关重要。Spring是一个全面的后端应用框架,它提供了依赖注入(DI)、面向切面编程(AOP)、事务管理等众多功能。Spring可以帮助...
Java SSM和SSH框架是两种常见的企业级Java开发框架,它们在现代Web应用程序开发中扮演着重要的角色。SSM框架组合了Spring、Struts2和MyBatis,而SSH框架则由Spring、Struts2和Hibernate组成。这两个框架都是为了简化...
在Web开发中,Spring MVC作为Spring的一个模块,提供了一种组织和构建Web应用程序的方式,与Struts2类似,但更灵活和轻量级。 3. **Hibernate**:Hibernate是一个强大的ORM框架,它简化了Java应用与数据库之间的...
SSH 框架与 SSI 框架是两种常见的 Web 应用程序框架,它们之间有着很大的区别,本文将通过配置说明来详细阐述这两个框架的差异。 首先,让我们来看一下 SSH 框架的配置文件。SSH 框架使用 Spring 框架作为其基础...