spring支持的事务管理

 

1、编程式事务:

需在spring.xml配置文件中,

1、配置数据源、

2、持久化模板(jdbc模板、hibernate模板、mybatis模板)、 对象里面注入的是数据源及框架的属性配置;

3、需编写事务管理器 transcationManager, 对象里面注入的是数据源对象;

4、配置事务模板 transactionTemplate ,对象里面注入的是事务管理器对象;

5、需配置持久化dao,需注入 持久化模板对象和 事务模板对象 两个;

6、在dao层的对象中,所有的增删改需放在 事务模板的内部类中 实现持久化操作;

 

2、声明式事务 需在spring.xml文件配置:

1、配置数据源;

2、持久化模板(jdbc模板、hibernate模板、mybatis模板)、 对象里面注入的是数据源及框架的属性配置;

3、配置事务管理器 transcationManager, 对象里面注入的是数据源对象;

4、通过aop配置声明式事务(切入的规则,切入点两个标签)

5、配置持久层dao, 需注入 持久化模板对象即可。

6、在dao层,所有的增删改使用持久化模板来完成数据的持久化操作; 声明式相对编程式: 代码更宽松,只配置在xml文件中即可,利用aop的横切规则即能完成事务的操作; 跟持久层的代码没有耦合; 

 

 

3、注解式事务 需在spring.xml文件配置:

1、配置数据源;

2、持久化模板(jdbc模板、hibernate模板、mybatis模板)、 对象里面注入的是数据源及框架的属性配置;

3、需编写事务管理器 transcationManager, 对象里面注入的是数据源对象;

4、使用<tx:annotation-driven transaction-manager="transcationManager"/> 注解,指向事务管理器;

5、持久层dao的代码,使用@Repository 注解, 然后在spring.xml文件中配置包扫描;

6、持久层dao类中的所有增删改(需要事务支持的方法),方法的上方需加@Transactional 注解。

 

 

2中的声明式事务中方法的配置属性: <tx:method name="add*" propagation="REQUIRED" timeout="-1" no-rollback-for="" read-only="false" rollback-for="" isolation="DEFAULT" />

name: 匹配的方法名称

propagation:事务的传播属性,一共有7个值(REQUIRED,REQUIRED_NEW,SUPPORTS, MANDATORY,NOT_SUPPORTED,NEVER,NESTED)

timeout: 事务执行的事件控制, 超时时间;

rollback-for: 见到什么异常就回滚;

no-rollback-for: 见到什么异常一定不回滚;

isolation: 事务的传播属性,一共有4个值(default,read-only,read-write,transaction)

read-only: 只读;

转载于:https://www.cnblogs.com/ziranfengwei/p/7096083.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RK3399Pro学习笔记】二、Thinker Edge R 内网穿透以实现远程SSH

目录免费方案花生壳下载安装添加内网穿透映射测试平台&#xff1a;华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本&#xff1a;Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 因Thinker Edge R安装的镜像为64位的版本 getconf LONG_BIT免费方案 花生壳 下载 在花生壳下载…

第14章:傅里叶变换

第14章&#xff1a;傅里叶变换一、理论基础&#xff1a;二、Numpy实现傅里叶变换&#xff1a;1. 实现傅里叶变换&#xff1a;2. 逆傅里叶变换&#xff1a;3. 高通滤波示例&#xff1a;三、OpenCV实现傅里叶变换&#xff1a;1. 实现傅里叶变换&#xff1a;2. 实现逆傅里叶变换&a…

代码能不能不要写得这么烂?!

我是一个研二的即将实习和毕业的普通屌丝研究生&#xff0c;带着几个研一的同学一起做数据挖掘项目。为了在毕业的时候防止青黄不接导致老师不让我毕业&#xff0c;于是从他们刚进实验室起&#xff0c;就“开始了设计模式和代码风格的培养”。具体的做法&#xff0c;就是扔给他…

MYSQL jdbc autoReconnect

http://blog.csdn.net/a9529lty/article/details/7104351 http://blog.163.com/huangfei_person/blog/static/58156675201092911507809/转载于:https://www.cnblogs.com/rgqancy/p/7097916.html

【Kali 树莓派版学习笔记】安装系统和VNC服务

目录下载固件和烧录系统第一次开机SSH连接换源设置语言安装VNC平台&#xff1a;树莓派3B 版本&#xff1a; Linux kali 5.4.83-Re4son-v7 #1 SMP Sat May 15 03:22:58 UTC 2021 armv7l GNU/Linux 下载固件和烧录系统 Get Kali 格式化TF卡 使用Win32DiskImager刷入镜像 第…

第15章:模板匹配

第15章&#xff1a;模板匹配一、模板匹配基础&#xff1a;1. cv2.matchTemplate()函数&#xff1a;2. 匹配原理&#xff1a;3. 查找最值&#xff1a;二、多模版匹配&#xff1a;1. 获取匹配位置集合&#xff1a;2. 循环&#xff1a;3.调整坐标4.标记匹配图像的位置​ 模板匹配是…

GridView 移除模板列

protected void gvMain_ItemDataBound(object sender, DataGridItemEventArgs e) { if (e.Item.ItemType ListItemType.AlternatingItem || e.Item.ItemType ListItemType.Item) { e.Item.Cells.RemoveAt(0); } } 转载于:https://ww…

事件处理机制--浏览器流程处理分析

事件处理机制--浏览器流程处理分析 js的运行是单线程的&#xff0c;单线程即一个时间只能做一件事。浏览器的运行是多线程的。 如下三种情况会进入事件队列&#xff08;任务队列&#xff09;中&#xff0c;但不立即执行&#xff1a; 1&#xff0e;定时函数 2&#xff0e;事件函…

第16章:霍夫变换

第16章&#xff1a;霍夫变换一、霍夫直线变换&#xff1a;1. 霍夫直线变换原理&#xff1a;2. HoughLines函数&#xff1a;3. HoughLinesP函数&#xff1a;2. 霍夫圆环变换&#xff1a;霍夫变换是一种在图像中寻找直线、圆形以及其他简单形状的方法。霍夫变换采用类似于投票的方…

一个java处理JSON格式数据的通用类(三)

/** *//** * 从json数组中解析出java Integer型对象数组 * param jsonString * return */ public static Double[] getDoubleArray4Json(String jsonString)...{ JSONArray jsonArray JSONArray.fromObject(jsonString); Doubl…

【树莓派学习笔记】九、C语言寄存器操作控制GPIO

目录CPU型号确定寄存器的地址问题GPIO寄存器GPFESLnGPSETnGPCLRn重要函数mmap函数munmap函数点灯程序平台&#xff1a;树莓派3B 版本&#xff1a; 2021-05-07-raspios-buster-armhf CPU型号确定 由 pinout命令可知&#xff0c;所用的板子Soc型号为BCM2837 寄存器的地址问题…

bzoj2527

首先环可以变成链来处理&#xff0c;对于l>r的情况就是修改区间[1,r],[l,mx]然后不难想到整体二分&#xff0c;二分答案k,然后算1~k场流星雨对国家的贡献然后判定将国家划分变成子问题解决&#xff0c;没什么难的终于不是tle&#xff0c;poi良心了一把 1 type wayrecord2 …

第17章:图像分割提取

第17章&#xff1a;图像分割提取一、用分水岭算法实现图像分割提取&#xff1a;1. 算法原理&#xff1a;2. 相关函数介绍&#xff1a;(1) 形态学函数回顾&#xff1a;(2) 距离变换函数distanceTransform&#xff1a;(3) 确定未知区域&#xff1a;(4) 函数connectedComponents对…

Linux虚拟机安装应用程序提示Graphical installers are not supported by the vm

Linux安装应用程序提示Graphical installers are not supported by the vm 参考链接&#xff1a;http://www-01.ibm.com/support/docview.wss?uidswg21462180 Technote (troubleshooting) Problem(Abstract) Attempts to install IBM Security AppScan Source on Linux result…

[转]可伸缩系统的架构经验

最近&#xff0c;阅读了Will Larson的文章Introduction to Architecting System for Scale&#xff0c;感觉很有价值。作者分享了他在Yahoo!与Digg收获的设计可伸缩系统的架构经验。在我过往的架构经验中&#xff0c;由于主要参与开发企业软件系统&#xff0c;这种面向企业内部…

【Linux技巧】cmake、make命令多线程编译,大大提高编译速度

目录获取最大可用线程数自动以最大线程数编译makecmake效果系统&#xff1a;Debian 获取最大可用线程数 nprocnproc命令可返回当前可用的最大线程数 树莓派3B (BCM2837)&#xff1a;4 RK3399 Pro&#xff1a;6 自动以最大线程数编译 make sudo make -j $(nproc)cmake su…

[转帖]鲍鹏山:我们培养了很多高学历的野蛮人

按&#xff1a;我的理解&#xff0c;鲍老师的讲演有下面五重意思&#xff1a; 1.集中精力研究有意义的问题&#xff0c;而不应该刻意掌握一些无实际意义的知识。“我之所以这么聪明&#xff0c;是因为我从来不在不必要的事情上浪费精力--尼采” 2.为了获得别人的羡慕钦佩去掌握…

redis学习(九)——数据持久化

一、概述 Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的&#xff0c;然而当Redis重启后&#xff0c;所有存储在内存中的数据将会丢失&#xff0c;在很多情况下是无法容忍这样的事情的。所以&#xff0c;我们需要将内存中的数据持久化&#xff01;典型的需要持久…

粘贴复制Android复制和粘贴的实现

最近研究粘贴复制&#xff0c;稍微总结一下&#xff0c;以后继续补充&#xff1a; main.xml如下: <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width&quo…

【机器视觉学习笔记】生成高斯滤波器掩膜(C++)

目录原理二维高斯分布生成高斯掩膜&#xff08;小数形式&#xff09;源码及效果平台&#xff1a;Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文算法摘自高斯滤波(GaussianFilter)原理及C实现 —— 小武~~ 原理 高斯滤波和均值滤波一样&#xff0c;都是利用一个掩膜…