`

SSH和合心得02 (Spring控制事务)

阅读更多
这几天被事务困住了许久,按很多前辈说的方法配置都未成功,通过大量的搜索才找到原因。


Spring 使用AOP事务时容易出错的点(使用这种方式的事务需要导入aspectjrt.jar,aspectjweaver.jar 两个包Spring/lib/aspectj)

<aop:config>
  <aop:pointcut id="deleteOperation" expression="execution(* jk.dao.*.*(..))" />
  <aop:advisor advice-ref="deleteTx" [b]pointcut-ref[/b]="deleteOperation"/>
</aop:config>


加粗的地方就是容易写错的,这点一般习惯性的用eclipse自带的提示首先会出现  pointcut  而不是  pointcut-ref  就是这个细微差别就会引起错误。


关键点最难发现的错误
因为我试了很多种方式都没成功,我就怀疑是其它地方引起的,就去搜索相关事务不成功的问题,无意中发现一个回答说Mysql里面建的表如果不是  Innodb  就不能支持事务!!马上去尝试,结果就是这个原因引起


例子SQL:
DROP TABLE IF EXISTS `ssh`.`sshuserinfo`;
CREATE TABLE  `ssh`.`sshuserinfo` (
  `userid` bigint(20) NOT NULL,
  `username` varchar(10) default NULL,
  `age` int(11) default NULL,
  `BIRTHDAY` date default NULL,
  PRIMARY KEY  (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


常用Spring的事务控制方法

定义一个基础的事务配置
key="deleteArray" 这种配置代表方法名为这个的就会进行事务控制,"delete*" 表示只要是以delete开头的方法都会控制事务,PROPAGATION_REQUIRED 是事务控制的其它一种,及当前没有事务打开一个,在这个方法中其它方法在执行的时候如果当前有事务就用当前这个,没有就创建一个,这种基本满足我们普通的事务控制,另外还有3种,可以看Spring的文档和查询这方面的资料

<bean id="proxybase" 
   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> 
   <property name="transactionManager" ref="transactionManager" /> 
   <property name="transactionAttributes"> 
    <props> 
     <prop key="deleteArray">PROPAGATION_REQUIRED</prop> 
     <prop key="update*">PROPAGATION_REQUIRED</prop> 
     <prop key="modify*">PROPAGATION_REQUIRED</prop> 
    </props> 
   </property> 
  </bean>  

在使用事务的时候只需要定义相应的代理类继承于基础事务,然后指定需求代理的目标类就能完成事务控制 
<bean id="userInfoDAOProxy" parent="proxybase">
 	<property name="target" ref="userInfoDAO"/>
 </bean>



2
0
分享到:
评论

相关推荐

    step by step ssh 04 Spring 事务控制

    在"step by step ssh 04 Spring 事务控制"这一主题中,我们将深入探讨如何在SSH架构下实现Spring的AOP(面向切面编程)事务管理,以及如何结合Struts和Hibernate进行用户登录实例。 首先,Struts作为MVC(模型-视图...

    spring使用心得 java ssh

    Spring事务管理还包括编程式事务管理,通过PlatformTransactionManager接口进行手动控制事务的开始、提交和回滚。 "spring如果no setter found for property.txt"可能是关于依赖注入的问题。在Spring容器中,对象的...

    ssh框架使用spring配置事务所需的jar包

    总的来说,`aopalliance.jar`、`aspectjrt.jar`和`aspectjweaver.jar`这三个jar包在Spring中用于实现基于AspectJ的声明式事务管理,它们让开发者能够专注于业务逻辑,而不必关心事务控制的细节,提高了代码的可读性...

    ssh整合+spring声明式事务

    在SSH整合中,Spring的声明式事务管理是一个关键部分,它允许开发者无需在业务代码中显式控制事务的开始、提交和回滚,而是通过配置来决定哪些方法应该在事务中执行。 首先,让我们来看看SSH整合的步骤: 1. **...

    SSH项目源码及心得体会

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架。这个"SSH项目源码及心得体会"的资源对于初学者来说尤其宝贵,因为它不仅包含了实际项目的源代码,还记录了开发者在整合和...

    SSH中 struts hibernate spring 各起什么作用

    ### SSH框架:Struts、Hibernate、Spring的作用解析 #### Struts **Struts** 是一个基于MVC(Model-View-Controller)设计模式的开源框架,主要用于构建动态Web应用程序。在SSH架构中,Struts主要负责处理用户界面...

    ssh(struts+spring+hibernate)教务管理信息系统(全部代码) 可以直接运行

    在SSH整合中,Spring作为业务逻辑的容器,管理Bean的生命周期和事务。它还能与Hibernate进行无缝集成,简化数据访问层的配置。此外,Spring MVC是Spring的一部分,可以替代Struts作为前端控制器,提供更灵活的架构。...

    在SSH框架Spring的作用

    在SSH框架中,Spring扮演着至关重要的角色,它作为容器,负责管理整个应用程序的组件,包括但不限于业务逻辑、DAO层和控制器。Spring的两大核心特性——IoC(Inversion of Control,控制反转)和DI(Dependency ...

    在SSH中使用事物包括SSH的搭建和配置;事务的配置;注释详细。(完整项目)

    在SSH中,如果事务过程中发生异常,Spring会自动回滚事务,以确保数据的一致性。开发者也可以在遇到特定情况时手动触发回滚,例如通过抛出自定义异常或调用`TransactionAspectSupport.currentTransactionStatus()....

    ssh2登陆+spring aop做拦截

    SSH2(Secure Shell version 2)是一种网络协议,用于提供安全的远程登录和数据传输,而 Spring AOP(Aspect Oriented Programming)则是 Spring 框架中的一个特性,用于实现面向切面编程,允许我们定义横切关注点,...

    SSH2 整合之 spring 2.5.6 jar包

    整合 SSH2 和 Spring 2.5.6,意味着在Spring应用中利用SSH的安全特性,如通过SSH进行远程命令执行、文件传输或管理服务器资源。这通常涉及到以下关键知识点: 1. **Spring Framework**: Spring 提供了一个模块化的...

    SSH中spring的作用

    Spring框架在SSH中的核心作用是作为管理容器,它实现了Inversion of Control(IoC,控制反转)和Dependency Injection(DI,依赖注入)的概念。IoC意味着应用程序的控制权由容器接管,而不是由程序自身控制。DI则是...

    SSH和Spring框架简介

    SSH和Spring框架是Java开发中的两个重要工具,它们在企业级应用开发中占据了核心地位。SSH,是由Struts2、Spring和Hibernate三个框架组成的集成解决方案,而Spring则是一个全面的后端开发框架,包含了多种功能模块。...

    SSH笔记-整合Spring2、Struts2、Hibernate4

    在SSH整合中,Spring主要负责管理Bean的生命周期和事务控制,以及提供数据访问接口(DAO)的抽象。 1. **依赖注入**:Spring通过XML配置或注解方式实现对象间的依赖关系,降低耦合度。 2. **AOP**:Spring的AOP模块...

    ssh 整合 struts hibernate spring

    在SSH整合中,Spring主要负责事务管理和数据源配置。 SSH整合的关键步骤包括: 1. 引入相关库:确保项目中包含了Struts、Hibernate和Spring的JAR文件。 2. 配置Spring:创建spring-context.xml文件,配置Bean,...

    在SSH框架中加入事务支持

    在SSH框架中,Hibernate作为ORM工具,通常与Spring事务管理结合使用。当Spring管理事务时,Hibernate的Session将在事务范围内打开和关闭,保证了数据的一致性。 至于Struts,它是SSH框架的前端控制器,主要负责请求...

    ssh框架struts2 spring hibernate

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。它们分别负责Web层、服务层和持久层的管理,构建出高效、灵活的企业级应用程序。 Struts2是MVC(Model-View-...

    语言程序设计资料:基于SSH(Struts + Spring + Hibernate)框架的网上购物系统.ppt

    语言程序设计资料:基于SSH(Struts + Spring + Hibernate)框架的网上购物系统.ppt

    SSH(Struts+Spring+Hibernate)结合项目简单实例

    4. **服务层**:Spring容器可以管理业务服务,如DAO(Data Access Object)和Service对象,方便进行事务控制和事务隔离。 **Hibernate** Hibernate是一个优秀的对象关系映射(ORM)框架,它消除了Java应用程序与...

Global site tag (gtag.js) - Google Analytics