网易首页 > 网易号 > 正文 申请入驻

JDBC技术-数据库事务处理与隔离性了解

0
分享至

1.事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。

2.事务处理的原则:保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。

当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;

要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。

// 以下的两个操作共同构成一个数据库事务。但是在两个操作之间可能出现异常问题。

// 原则上,一旦出现问题,就需要将之前的操作“回滚”!需要对如下的操作进行完善。

@Test

public void testUpdate() {

String sql1 = “update user_table set balance = balance – 100 where user = ?”;

update(sql1, “AA”);

System.out.println(10 / 0);

String sql2 = “update user_table set balance = balance + 100 where user = ?”;

update(sql2, “BB”);

3.考虑到数据库事务的话,我们又将原来使用PreparedStatement重构的Statement的增删和改查的操作,再升级。

// 实现一个通用的UPDATE INSERT DELETE的操作的方法(version 3·0)

public void update(Connection conn,String sql, Object… args) {

PreparedStatement ps = null;

try {

ps = conn.prepareStatement(sql);

for (int i = 0; i < args·length; i++) {

ps.setObject(i + 1, args[i]);

ps.execute();

} catch (Exception e) {

e.printStackTrace();

} finally {

JDBCUtils.close(null, ps, null);

// 实现一个通用的查询操作,返回一个对象(version 3·0)

public

T getInstance(Connection conn,String sql, Class

clazz, Object… args) {

PreparedStatement ps = null;

ResultSet rs = null;

try {

ps = conn.prepareStatement(sql);

// 填充占位符

for (int i = 0; i < args·length; i++) {

ps.setObject(i + 1, args[i]);

// 4.执行并返回ResultSet的对象

rs = ps.executeQuery();

if (rs.next()) {

// 5.创建T的对象

T t = clazz.newInstance();

// 6.将结果集中的列值作为T的对象的属性,给予赋值

ResultSetMetaData rsmd = rs.getMetaData();

int columnCount = rsmd.getColumnCount();

for (int i = 0; i < columnCount; i++) {

Object columnVal = rs.getObject(i + 1);

String columnLabel = rsmd.getColumnLabel(i + 1);

PropertyUtils.setProperty(t, columnLabel, columnVal);

return t;

} catch (Exception e) {

e.printStackTrace();

} finally {

// 7.关闭相应的操作

JDBCUtils.close(rs, ps, null);

return null;

// 实现一个通用的查询操作,返回一个对象的集合(version 3·0)

public

List

getForList(Connection conn,String sql,Class

clazz,Object … args){

PreparedStatement ps = null;

ResultSet rs = null;

List

list = new ArrayList

try{

ps = conn.prepareStatement(sql);

for(int i = 0;i < args·length;i++){

ps.setObject(i + 1, args[i]);

rs = ps.executeQuery();

ResultSetMetaData rsmd = rs.getMetaData();

int columnCount = rsmd.getColumnCount();

while(rs.next()){

T t = clazz.newInstance();

for(int i = 0;i < columnCount;i++){

Object columnVal = rs.getObject(i + 1);

String columnLabel = rsmd.getColumnLabel(i + 1);

PropertyUtils.setProperty(t, columnLabel, columnVal);

list.add(t);

}catch(Exception e){

e.printStackTrace();

}finally{

JDBCUtils.close(rs, ps, null);

return list;

//考虑到数据库事务,通过java程序对数据库中表的操作的模板(掌握)

public void method(){

Connection conn = null;

try{

//1.获取数据库的连接(①conn = JDBCUtils.getConnection(); ②数据库连接池(开发者选择此))

//2.开启事务

conn.setAutoCommit(false);

//3.对数据库中表进行相应的操作(增、删、改、查)(①version 3.0 ②DBUtils工具类:update() 和query()方法)

//4.提交事务

conn.commit();

}catch(Exception e){

e.printStackTrace();

try{

//5.回滚事务

conn.rollback();

}catch(Exception e1){

e1.printStackTrace();

}finally{

//6.关闭数据库的连接(①自己实现数据库相应资源的关闭JDBCUtils.close(null,null,conn); ②使用DBUtils工具类的close()方法)

了解:

针对隔离性,我们提供了不同数据库处理的隔离级别,针对处理数据发生的问题(脏读、不可重复读、幻读)提供了多张隔离级别

隔离级别:(脏读是我们一定避免的,而不可重复读、幻读是允许存在的)

哟啊

文章转载链接:http://www.atguigu.com/jsfx/1125.html

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
难怪西方集体对中国黑脸:全球蛋糕分完,发现桌上只有7亿人的碗

难怪西方集体对中国黑脸:全球蛋糕分完,发现桌上只有7亿人的碗

热点一网打尽
2026-05-18 11:25:54
因在慕尼黑遭巴黎球迷辱骂,纳斯里将不会前往欧冠决赛现场

因在慕尼黑遭巴黎球迷辱骂,纳斯里将不会前往欧冠决赛现场

懂球帝
2026-05-28 20:12:49
岚图汽车回应:系销售个人行为

岚图汽车回应:系销售个人行为

ZAKER新闻
2026-05-28 12:11:23
陕西“强拆致一强拆人员死亡案”新进展:被拆迁户获取保候审

陕西“强拆致一强拆人员死亡案”新进展:被拆迁户获取保候审

澎湃新闻
2026-05-27 19:26:27
“摸奶子”再惹争议,OPPO的流量反噬开始了

“摸奶子”再惹争议,OPPO的流量反噬开始了

品牌头版
2026-05-13 10:18:15
与水晶宫高层闹翻 51岁奥地利名帅告别:1年夺3冠 队史前120年0冠

与水晶宫高层闹翻 51岁奥地利名帅告别:1年夺3冠 队史前120年0冠

风过乡
2026-05-28 05:49:47
落槌!全部划归国资!追随许家印6年,江苏第一包工头赔得精光

落槌!全部划归国资!追随许家印6年,江苏第一包工头赔得精光

凡知
2026-02-24 12:16:24
银行大势已定!不出意外的话,2026年起我国的银行将迎来三大洗牌

银行大势已定!不出意外的话,2026年起我国的银行将迎来三大洗牌

墨兰史书
2026-05-28 03:35:05
割四赔五后续:05后夫妻含泪返乡,本地人怒曝无人接单内幕

割四赔五后续:05后夫妻含泪返乡,本地人怒曝无人接单内幕

地球记
2026-05-28 16:00:10
折叠屏 iPhone Ultra 保护壳遭到提前泄露!

折叠屏 iPhone Ultra 保护壳遭到提前泄露!

XCiOS俱乐部
2026-05-27 20:17:48
韩国人破防了!因还原史上藩属国礼仪,韩5万人请愿下架一韩剧

韩国人破防了!因还原史上藩属国礼仪,韩5万人请愿下架一韩剧

快乐彼岸
2026-05-26 22:29:22
中方亮剑!德官员窜台不到48小时,中国直击德命脉,台独幻想破灭

中方亮剑!德官员窜台不到48小时,中国直击德命脉,台独幻想破灭

共工之锚
2026-05-28 12:23:28
致4人死亡!福建漳州市发生一起较大道路交通事故,调查报告:苏某驾驶货车超速行驶,与停在应急车道的养护作业车发生碰撞;7人被问责处理

致4人死亡!福建漳州市发生一起较大道路交通事故,调查报告:苏某驾驶货车超速行驶,与停在应急车道的养护作业车发生碰撞;7人被问责处理

台州交通广播
2026-05-28 15:52:21
京沪高铁:积极应对航空、新能源车等交通方式的激烈竞争,做强做大客运主业

京沪高铁:积极应对航空、新能源车等交通方式的激烈竞争,做强做大客运主业

澎湃新闻
2026-05-28 16:54:21
鲁比奥仅在机场停留1小时,与亚美尼亚签署3份文件

鲁比奥仅在机场停留1小时,与亚美尼亚签署3份文件

参考消息
2026-05-27 18:48:06
意甲神奇黑马!9年竟从破产到闯入欧冠!彻底改写意大利足球格局

意甲神奇黑马!9年竟从破产到闯入欧冠!彻底改写意大利足球格局

球叮足球
2026-05-28 09:49:05
没想到,卷入草台风波的张雪,因台湾馆长一句话赚足海峡两岸口碑

没想到,卷入草台风波的张雪,因台湾馆长一句话赚足海峡两岸口碑

阿伧说事
2026-05-27 19:52:02
三峡大坝收支出炉:运行20余年,总投资近2500亿,如今回本了吗?

三峡大坝收支出炉:运行20余年,总投资近2500亿,如今回本了吗?

一家说
2026-05-13 08:02:11
乌克兰议会批准接收欧盟900亿欧元贷款的法案

乌克兰议会批准接收欧盟900亿欧元贷款的法案

财联社
2026-05-28 17:25:14
南方多地持续开展防汛救援

南方多地持续开展防汛救援

新华社
2026-05-27 22:33:45
2026-05-28 20:28:49
IT爱好者小尚
IT爱好者小尚
分享IT教育类信息
630文章数 55关注度
往期回顾 全部

科技要闻

利润跌27%:快手只剩“可灵”这张牌?

头条要闻

朝鲜官员称朝鲜永远不会"无核化" 外交部回应

头条要闻

朝鲜官员称朝鲜永远不会"无核化" 外交部回应

体育要闻

如果雷霆拼图是这水平 马刺确实打不过

娱乐要闻

林俊杰七七与大哥嫂子的瓜剪不断理还乱

财经要闻

长鑫科技IPO过会,市值会到几万亿?

汽车要闻

新款吉利星愿6.18万起售 一镜到底寻找爆款密码

态度原创

家居
数码
教育
时尚
旅游

家居要闻

蜂鸟餐椅 线面交错

数码要闻

雷神公布"Zen 5" APU迷你主机Master D7000 / D5000 / D3000

教育要闻

2026年大学招生章程,内容有变化!#金榜同行时##升学规划避坑

穿真丝的女人,挺时髦!

旅游要闻

体荟四季|六一还能这样玩?上海这3个赶海地,娃玩到不想走!

无障碍浏览 进入关怀版