JAVA中对事物的理解
1.事物是一组操作数据的集合动作
(场景:再开发的时候相信大家都遇到主表和子表的插入问题,当主表插入成功时,子表没有插入成功,这时候我们就要把主表的数据回滚,这个时候我们就要用到事物了)
2.一组处理的步骤或者全部发生或者一步也不执行,我们称该组处理的步骤为一个事物,当所有的步骤操作像一个操作一样完整的执行,我们称该事物被提交。由于其中的一部分或者多步执行失败,导致没有步骤被提交,则事物必须回滚到系统的最初的状态。
Java中的事务处理
一般J2EE服务器支持三种类型的事务管理。即:JDBC事务,JTA事务,容器管理事务。
最好不要在程序中同时使用上述三种事务类型;并且,事务要在尽可能短的时间内完成,不要在不同方法中实现事务的使用。下面举两个例子说明JDBC及JTA事务,容器管理事务是在特定的框架中实现的(如:Spring的事务管理)
1. JDBC事务
public String delete(String id) {
String ID = id;
db = new getConnection();
Connection con = db.getConnection();
try {
con.setAutoCommit(false);
db.executeUpdate("delete from helloworld where ID=" + ID); //更新操作1
db.executeUpdate("delete from helloworld _book where ID=" + ID); //更新操作2
db.executeUpdate("delete from helloworld_user where ID=" + ID); //更新操作3
con.commit();//提交JDBC事务
con.setAutoCommit(true);
db.close();
return “success”;
}catch (Exception e) {
con.rollBack();//回滚JDBC事务
e.printStackTrace();
db.close();
return “fail”;
}
}
如上例:更新操作1,2,3只有当三步操作都成功完成才进行提交,否则回滚已经进行的操作。这样,保证了数据的完整性,不会因为突然断电等特殊情况导致的数据错误。
2.SpringBOOt处理事物,利用注解@Transactional
A.在ServiceImp 层中对要用到的事物加上@Transactional 注解即可
B.在SpringBOOT启动类中添加注解 @EnableTransactionManagement
最新文章
- 数独 JAVA实现
- iOS开发之遍历Model类的属性并完善使用Runtime给Model类赋值
- windows下react-native android打包笔记
- Atitit   图像处理 平滑 也称 模糊, 归一化块滤波、高斯滤波、中值滤波、双边滤波)
- 项目总结笔记系列 Maven Session1
- HD1269迷宫城堡(有向图 &;&; 划分连通块)
- DP:Cow Exhibition(POJ 2184)(二维问题转01背包)
- IT人的自我导向型学习:开篇杂谈
- ArcGis 中MapControl 框选
- git branch -D 大写的D 删除分支
- Html5元素及基本语法
- TCP/IP,HTTP,Socket的区别与联系
- mysql系统表加trigger和对特定的库禁用 DDL 语句
- AppDelegate 、UIApplication 的用法
- 使用自定义的BaseAdapter实现LIstView的展示
- MySQLBackup 使用说明
- Hack 语言学习/参考---1.2 Hack Background
- Android注解使用之Dagger2实现项目依赖关系解耦
- js系列教程2-对象、构造函数、对象属性全解
- Git——如何将本地项目提交至远程仓库(第一次)