spring注解方式管理事务 -凯发k8国际

`

spring注解方式管理事务

service类前加上@transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。
spring默认情况下会对运行期例外(runtimeexception)进行事务回滚。这个例外是unchecked
如果遇到checked意外就不回滚。
如何改变默认规则:
1 checked例外也回滚:在整个方法前加上@transactional(rollbackfor=exception.class)
2 unchecked例外不回滚:@transactional(notrollbackfor=runtimeexception.class)
3 不需要事务管理的(只查询的)方法:@transactional(propagation=propagation.not_supported)
                                                        在整个方法运行前就不会开启事务
       还可以加上:@transactional(propagation=propagation.not_supported,readonly=true),这样就做成一个只读事务,可以提高效率。
 
 
(6) companyservice.java
import javax.annotation.resource;
import org.springframework.stereotype.service;
import org.springframework.transaction.annotation.propagation;
import org.springframework.transaction.annotation.transactional;
import com.dao.companydao;
import com.entry.tcompanyinfo;
@service("companyservice")
@transactional
public class companyservice {
 
 @resource(name="companydao")
 private companydao companydao;
 public void setcompanydao(companydao companydao) {
  this.companydao = companydao;
 }
 public companydao getcompanydao() {
  return companydao;
 }
 
 @transactional(readonly=false,propagation=propagation.required,rollbackfor={exception.class})//readonly=true慎用(不可写事务) 
 public void test(tcompanyinfo tc){
  try{
   
   companydao.createobj(tc);
   string s=null;
   s.length();  //假设会抛出nullpointerexception,就会执行catch里的,如果不在catch里throw一个
                           runtimeexception子类,依然不会rollback
  }
  catch(exception e){
   //throw new exception("runtimeexception");
   system.out.println("exception");
   throw new numberformatexception("format exception"); //重抛一个exception,才能rollback
  }
 }
 
}
  在spring里,同样只会rollback unchecked exception(runtimeexcption及子类),而checked exception(exception及子类)是不会rollback的,除非你特别声明。
   @transactional(readonly = false, propagation = propagation.requires_new,rollbackfor = {myexception1.class,myexception2.class})

    因此所有在service层方法中用throws定义的exception,都必须在事务定义中进行rollback设定。(请勿善忘)

    所有在service层方法中被catch处理了的异常,又希望容器辅助rollback的话,必须重抛一个预定义的runtimeexception的子类。(请勿回望)

 

android入门实例:https://gitbook.cn/gitchat/activity/5d382e64b669c0566c335b32

分享到:
|
评论
1 楼 tiger20111989 2014-04-17  

相关推荐

    null 博文链接:https://coolszy.iteye.com/blog/542717

    spring使用注解进行事物管理例子,里面有说明.

    spring 与 各框架的组各下来,版本就特别的多,针对简单的 使用注解来管理事务的,研究了两天,要不网上写的不清楚,要不版本都很旧了,所以就是不回滚,spring 的配置太灵活了,在加上新手,根本就不可能明白spring...

    本代码使用h2内存数据库演示spring事务使用,包括编程式事务,声明式事务@transactional使用,自定义事务事务注解实现自定义事务管理器

    spring boot 纯注解方法事务控制回滚,注解 简单配置文件使用多线程demo

    声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@transactional注解。显然基于注解的方式更简单易用,更清爽。spring注解事务实现demo

    使用spring注解方式管理事务与传播行为详解 24.使用spring配置文件实现事务管理 25.搭建和配置spring与hibernate整合的环境 26.spring集成的hibernate编码与测试 27.struts与spring集成方案1(struts集成spring) ...

    spring 事务基于注解模式

    包含了spring事务的两种使用方式,xml和注解,有数据库

    spring事务管理教程,详细讲解了spring中的事务管理,包括声明式事务,注解式事务,以及事务配置等等

    spring事务管理几种方式代码实例:涉及编程式事务,声明式事务之拦截器代理方式、aop切面通知方式、aspectj注解方式,通过不同方式实例代码展现,总结spring事务管理的一般规律,从宏观上加深理解spring事务管理特性...

    4、了解spring事务管理的两种方式; 5、掌握基于xml和annotation的声明式事务管理的使用。 二.实验内容 (1)使用spring jdbc实现书店的购书过程,即有如下一个bookshopdao接口,编写bookshopdaoimp类实现该接口中的...

    spring3hibernate4注解式事务管理

    spring注解的方式开启事务。开启事务,事务挂起,等等。

    本文处理spring mybatis,或springjdbc,对oracle事务不能提交的问题分析与解决

    四,spring基于注解的开发对应源代码,事务详解(概念重点),基于注解的事务控制,spring集成junit

    springjdbc注解事务.zip,springjdbc注解事务.zip

    spring hibernate注解声明式事务实例

    本篇文章主要介绍了spring 使用注解方式进行事务管理配置方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

global site tag (gtag.js) - google analytics
网站地图