ssh框架中,通常我们的action会注入一个blo类,及服务层类,这个类里可以处理业务逻辑,执行多个dao的操作。
这个类是受spring事务控制的。例如以下代码,当我们请求addRoom.do的时候,就把页面输入的Room信息发到后台,从而达到插入数据库的操作。
但是这个操作如果在roomBlo里出现异常,即使插入数据库操作已完成,就会把事务回滚,从而自动取消刚刚完成数据库操作。 注意这里配置的事务类型是PROPAGATION_REQUIRED
beans.xml
<bean name="/addRoom" lazy-init="true"
class="action.AddRoomAction">
<property name="roomBlo">
<ref bean="roomBloProxy" />
</property>
</bean>
<bean id="roomBloProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="myTransactionManager" />
</property>
<property name="target">
<ref bean="roomBlo" />
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="roomBlo" class="blo.RoomBlo">
<property name="roomDao">
<ref bean="room_hibernateDao" />
</property>
</bean>
RoomBlo 类我们这么写:
public class RoomBlo {
...
public void addRoom(Room room) {
roomDao.addRoom(room);
throw new RuntimeException("dd");
}
...
}
这个roomDao.addRoom(room)操作会在报出异常后回滚。
但是如果我们配置的事务类型是PROPAGATION_NOT_SUPPORTED,但是这里异常后事务就不会回滚。
引用
Spring中常用事务类型:
PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
分享到:
相关推荐
在SSH框架中,Hibernate作为ORM工具,通常与Spring事务管理结合使用。当Spring管理事务时,Hibernate的Session将在事务范围内打开和关闭,保证了数据的一致性。 至于Struts,它是SSH框架的前端控制器,主要负责请求...
在SSH框架中,Spring扮演着至关重要的角色,它作为容器,负责管理整个应用程序的组件,包括但不限于业务逻辑、DAO层和控制器。Spring的两大核心特性——IoC(Inversion of Control,控制反转)和DI(Dependency ...
在Java开发中,SSH(Spring、Struts、Hibernate)是一个常用的三大框架组合,用于构建企业级Web应用程序。其中,Spring框架扮演着核心角色,它提供了一种强大的依赖注入(DI)机制,以及面向切面编程(AOP)支持,...
通过阅读"SSH框架简介.doc"和"Spring框架简介.doc",你可以深入理解这两个框架的工作原理、优缺点及应用场景,为你的Java开发之路打下坚实基础。在学习过程中,实践是关键,尝试创建小型项目,将理论知识转化为实际...
在IT行业中,SSH通常指的是Struts、Spring和Hibernate三大框架的集成,这三大框架是Java Web开发中的核心组件。在"step by step ssh 04 ...通过实践和学习,开发者可以更加熟练地运用SSH框架进行复杂的企业级应用开发。
在这个“带事务的ssh框架源代码”中,我们将会探讨SSH框架如何处理数据库事务,以及不同版本的Spring(1.2、2.5、3.2)在事务管理上的差异。 首先,Struts作为表现层框架,主要负责用户界面与控制器之间的交互。它...
SSH框架,全称为Spring、Struts和Hibernate,是Java Web开发中的一个经典组合,用于构建高效、可维护的Web应用程序。这些框架各自负责不同的职责,Spring作为基础架构框架,Struts处理视图与控制,Hibernate则专注于...
SSH框架整合是Java Web开发中常见的一种技术栈,由Spring、Hibernate和Struts2三个开源框架组合而成。这个组合提供了一种高效、灵活且可扩展的解决方案,用于构建企业级的Web应用程序。以下是对SSH框架整合及其中...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个压缩包文件"SSHdemo"提供了一个SSH框架搭建登录功能的示例,帮助开发者了解并实践如何整合这三个框架来构建一个...
SSH框架,全称为Spring、Struts2和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了模型-视图-控制器(MVC)架构模式,数据库持久化,以及强大的前端展示能力,使得开发者能高效地构建...
SSH框架,全称为Spring、Struts和Hibernate,是Java开发中的一个经典组合,常用于构建企业级Web应用程序。这三个框架分别承担着不同的职责,协同工作以实现高效、灵活且易于维护的软件架构。 Spring框架是核心,它...
8. **实战经验**:在实际项目中,开发者需要关注性能优化、事务管理、异常处理等问题,这都需要对SSH框架有深入的理解。例如,合理使用Spring的AOP进行事务管理,避免Struts的性能瓶颈,以及优化Hibernate的查询性能...
在实际开发中,SSH框架的集成使得开发者能高效地进行业务逻辑处理,同时Spring的事务管理功能可以确保数据一致性。通过阅读提供的文件,开发者可以深入理解SSH框架的工作原理,并将其应用于实际项目中,提高开发效率...
该资源中包含SSH框架整合中spring框架所需要的全部jar包。包括: (1)IOC核心包(4个包和2个日志包) (2)整合web (3)Spring整合JUnit测试包 (4)AOP核心包(4个包) (5)JDBC模板和事务核心包(spring-jdbc|...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个项目源码提供了SSH整合的实践案例,特别适合初学者学习和理解Web应用的开发流程。 Struts2作为MVC(Model-View-...
### SSH框架整合详细步骤(spring+struts2+hibernate) #### 一、整合概述 在现代Web应用开发中,SSH(Struts2、Spring、Hibernate)框架因其各自独特的功能和优势,常被组合使用以构建高效、稳定且易于维护的系统...
总结来说,SSH框架整合是Java Web开发中的一个重要选择,它利用Spring的控制反转和面向切面编程,Struts2的MVC模型,以及Hibernate的对象关系映射,为企业级应用开发提供了一套成熟的解决方案。导入这个整合包,...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。它们分别负责表现层、业务层和服务层的管理,构建了一个完整的MVC(Model-View-Controller)架构。下面将详细介绍这三...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了一种高效且强大的方式来构建企业级应用,它整合了模型-视图-控制器(MVC)设计模式、依赖注入(DI)...
SSH框架是Java开发中常用的三大开源框架——Spring、Struts2和Hibernate的组合,它们各自负责应用程序的不同层面:Spring作为核心容器,管理组件和依赖注入;Struts2处理MVC模式中的视图与控制;Hibernate则专注于...