zoukankan      html  css  js  c++  java
  • Spring事务之@Transactional

    参考源API : https://docs.spring.io/spring/docs/current/javadoc-api/
    org.springframework.transaction.annotation.Transactional:Annotation Types:Transactional

    学习代码片段:

    @Override
    	@Transactional(propagation=Propagation.REQUIRED,rollbackFor = Exception.class)
    	public AddressDTO addDeliveryAddr(AddressDTO dto) throws GdApiException{
    	    //@todo ....
    	}    
    	
    

    参考API 简单的翻一下: 原文:

    Describes transaction attributes on a method or class. This annotation type is generally directly comparable to Spring's RuleBasedTransactionAttribute class, and in fact AnnotationTransactionAttributeSource will directly convert the data to the latter class, so that Spring's transaction support code does not have to know about annotations. If no rules are relevant to the exception, it will be treated like DefaultTransactionAttribute (rolling back on RuntimeException and Error but not on checked exceptions).

    译文:

    transaction属性修饰的是一个类或者方法,这个注解通常直接媲美RuleBasedTransactionAttribute类。实际上,Spring的事物支持代码不需要知道注解,因为 AnnotationTransactionAttributeSource 可以直接把数据转到后面的Class。 如果没有规定相关的异常,它类似于DefaultTransactionAttribute

    propagation 简单的注释下:
    各种属性的意义: 
    
       REQUIRED:业务方法需要在一个容器里运行。如果方法运行时,已经处在一个事务中,那么加入到这个事务,否则自己新建一个新的事务。 
    
       NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为他开启事务,如果方法在一个事务中被调用,该事务会被挂起,调用结束后,原先的事务会恢复执行。 
    
       REQUIRESNEW:不管是否存在事务,该方法总汇为自己发起一个新的事务。如果方法已经运行在一个事务中,则原有事务挂起,新的事务被创建。 
    
       MANDATORY:该方法只能在一个已经存在的事务中执行,业务方法不能发起自己的事务。如果在没有事务的环境下被调用,容器抛出例外。 
    
       SUPPORTS:该方法在某个事务范围内被调用,则方法成为该事务的一部分。如果方法在该事务范围外被调用,该方法就在没有事务的环境下执行。 
    
       NEVER:该方法绝对不能在事务范围内执行。如果在就抛例外。只有该方法没有关联到任何事务,才正常执行。 
    
       NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中。如果没有活动事务,则按REQUIRED属性执行。它使用了一个单独的事务,这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionManager事务管理器起效。
  • 相关阅读:
    搭建UEFI PXE 基于linux相关资料
    SLES 搭建dhcp6服务器
    SUSE Linux 11架设Apache虚拟主机
    Virtualbox 安装SLES11 SP4系统后安装Guest Additions
    centos7 安装wireshark
    RHEL7.x 安装virtualbox增强组件
    Readhat 7.x禁用防火墙
    Debian普通用户添加sudo权限
    Virtualbox 错误提示"VT-x is not available (VERR_VMX_NO_VMX)"解决办法
    VNC 下载地址和key
  • 原文地址:https://www.cnblogs.com/Profound/p/8762749.html
Copyright © 2011-2022 走看看