spring 事务管理是通过AOP拦截指定的方法,进行事务管理。

事务配置

<aop:config proxy-target-class="true"><aop:advisor advice-ref="txAdvice" pointcut="execution(* com.redxun.*.*.manager..*(..))" />
</aop:config><tx:advice id="txAdvice" transaction-manager="jpaTranManager"><tx:attributes><tx:method name="genSequenceNo" propagation="REQUIRES_NEW" isolation="READ_COMMITTED"/><tx:method name="del*" propagation="REQUIRED" isolation="READ_COMMITTED" /><tx:method name="add*" propagation="REQUIRED" isolation="READ_COMMITTED" /><tx:method name="*" propagation="REQUIRED" /></tx:attributes>
</tx:advice>

pointcut:切入点
tx:method: 对事务方法定义
参数名 备注
name 
定义事务的方法名称,名称可以支持通配符
propagation
事务传播性
isolation
 事务隔离级别
readonly
事务是否只读

事务传播性:

propagation_requierd:如果当前没有事务,就新建一个事务,如果已存在一个事务中,加入到这个事务中,这是最常见的选择。
propagation_supports:支持当前事务,如果没有当前事务,就以非事务方法执行。
propagation_mandatory:使用当前事务,如果没有当前事务,就抛出异常。
propagation_required_new:新建事务,如果当前存在事务,把当前事务挂起。
propagation_not_supported:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
propagation_never:以非事务方式执行操作,如果当前事务存在则抛出异常。
propagation_nested:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与propagation_required类似的操作

事务隔离级别:

read uncommited:是最低的事务隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。
read commited:保证一个事物提交后才能被另外一个事务读取。另外一个事务不能读取该事物未提交的数据。
repeatable read:这种事务隔离级别可以防止脏读,不可重复读。但是可能会出现幻象读。它除了保证一个事务不能被另外一个事务读取未提交的数据之外还避免了以下情况产生(不可重复读)。
serializable:这是花费最高代价但最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读之外,还避免了幻象读。

脏读、不可重复读、幻象读概念说明:
脏读:指当一个事务正在访问数据,并且对数据进行了修改,而这种数据还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据还没有提交那么另外一个事务读取到的这个数据我们称之为脏数据。依据脏数据所做的操作肯能是不正确的。
不可重复读:指在一个事务内,多次读同一数据。在这个事务还没有执行结束,另外一个事务也访问该同一数据,那么在第一个事务中的两次读取数据之间,由于第二个事务的修改第一个事务两次读到的数据可能是不一样的,这样就发生了在一个事物内两次连续读到的数据是不一样的,这种情况被称为是不可重复读。
幻象读:一个事务先后读取一个范围的记录,但两次读取的纪录数不同,我们称之为幻象读(两次执行同一条 select 语句会出现不同的结果,第二次读会增加一数据行,并没有说这两次执行是在同一个事务中)

readonly

是否只读,设置了这个属性为true,那么这个链接为只读,不允许数据编辑。

SPRING 事务管理说明相关推荐

  1. Spring事务管理 与 SpringAOP

    1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略.  ...

  2. 什么是事务的传播_这么漂亮的Spring事务管理详解,你不来看看?

    事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用 ...

  3. Spring 事务管理高级应用难点剖析

    Spring 事务管理高级应用难点剖析: 第 1 部分 http://www.ibm.com/developerworks/cn/java/j-lo-spring-ts1/index.html htt ...

  4. spring事务管理 TransactionProxyFactoryBean源码分析

    J2EE,当然离不开事务,事务又当然少不了Spring声明式事务.spring声明式事务,很多码农门,应该和笔者一样,停留在使用上,及仅仅了解点原理.如:Spring事务管理原理"代理+AO ...

  5. Spring 事务管理高级应用难点剖析--转

    第 1 部分 http://www.ibm.com/search/csass/search/?q=%E4%BA%8B%E5%8A%A1&sn=dw&lang=zh&cc=CN& ...

  6. Spring事务管理(详解+实例)

    写这篇博客之前我首先读了<Spring in action>,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下: ...

  7. 在Spring事务管理下,Synchronized为啥还线程不安全?

    在synchronized 锁住方法的情况下,竟然出现了脏写 Tips 昨天本来打算是准备着一支烟 一杯咖啡 一个bug写一天的,突然我们组长跟我们说线上环境报错了, 还出现了"服务器异常, ...

  8. 多数据源 事务管理_可能是最漂亮的Spring事务管理详解

    事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用 ...

  9. springaop事务逻辑原理_架构师:一篇文章掌握——Spring 事务管理

    对大多数Java开发者来说,Spring事务管理是Spring应用中最常用的功能,使用也比较简单.本文主要逐步介绍Spring事务管理的相关知识点及原理,作为Spring事务管理的学习总结. 一.关键 ...

最新文章

  1. asp.net 调用带证书的webservice解决办法
  2. Unity3D 单例模式
  3. boost::gil::view_type_from_pixel用法的测试程序
  4. EntityFramwork(1) 源地址https://msdn.microsoft.com/zh-cn/data/jj193542
  5. GCC编译过程与动态链接库和静态链接库
  6. VB中使用GDI+进行图像缩放的实例
  7. centos akonadi mysql,MySQL数据库之在CentOS7上安装MySQL5.7
  8. bigdecimal 保留两位小数_一律使用 BigDecimal,避免后患?
  9. 虚拟服务器英文版设置,apache配置(linux及windows中的设置)以及虚拟主机的设置(国外英语资料).doc...
  10. 2020-09-08 Win7-Win10内部版本号
  11. 2:url有规律的多页面爬取
  12. [转]Java杂谈(七)--接口amp; 组件、容器
  13. html设计方案,网页设计经典方案
  14. r语言 rep(c(1 3) 4),不倒翁-R语言入门系列4-rep函数的用法
  15. 西数打造面向数据中心的Gold产品组合
  16. mysql mtq_Mysql 入门学习指南
  17. 向量组秩及其极大线性无关组求解浅析
  18. 王俊杰:苏宁AI在智慧零售上的应用
  19. 投掷硬币(概率dp)
  20. SAP中公司与公司代码关系

热门文章

  1. SimpleDateFormat的线程安全问题
  2. 网易有道CEO周枫:在线教育的冰山
  3. Centos 6.5系统安装配置图解教程
  4. 关于 HTML5 的 11 个让人难以接受的事实
  5. linux 系统装中文输入法 fcitx
  6. engine中调整Element的上下显示顺序(遮盖)
  7. Tomcat 启动卡住
  8. 爱立信2015谋变之路:结盟思科聚焦IT业务
  9. SoftReference
  10. 深入浅出OOP(四): 多态和继承(抽象类)