事物笔记
什么是事務(wù):
一件事情有N個(gè)組成單元,執(zhí)行之后要么同時(shí)成功,要么同時(shí)失敗。
MySQL是一條默認(rèn)的事務(wù),一條sql語句就是一條事務(wù)。
------------------------------------------------------------
MySQL事務(wù):
1、開啟一個(gè)事務(wù):start transaction
2、事務(wù)提交:commit 代表從開啟事務(wù)到事務(wù)提交中間的所有sql語句都認(rèn)為是有效的。
3、事務(wù)回滾:rollback 代表從開啟事務(wù)到事務(wù)回滾之間的所有sql語句都認(rèn)為是無效的。
當(dāng)開啟事務(wù)執(zhí)行sql語句之后,在數(shù)據(jù)庫中是可以查看到的,但這只是以日志的方式存在,并沒有真正的存在MySQL的磁盤上,這時(shí)執(zhí)行事務(wù)回滾之后,數(shù)據(jù)是沒有的。
------------------------------------------------------------
JDBC實(shí)務(wù)操作:
默認(rèn)是自動(dòng)事務(wù):
每執(zhí)行一次excuteUpdate方法,就代表事務(wù)自動(dòng)提交。
把自動(dòng)提交的代碼設(shè)置成false,意思是不自動(dòng)提交,改為手動(dòng)提交:
conn.setAutoCommit(false);
手動(dòng)開啟事務(wù)之后獲得執(zhí)行平臺(tái):
Statement stmt = conn.createStatement();
通過jdbc的API手動(dòng)操作:
1、開啟事務(wù):conn.setAutoCommit(false);
2、提交事務(wù):conn.commit();
3、事務(wù)回滾:conn.rollback();
注意:執(zhí)行sql語句的connection與開啟事務(wù)的connection必須是同一個(gè),才能對(duì)事務(wù)進(jìn)行控制。
------------------------------------------------------------
DBUtils事務(wù)操作:
DBUtils分為有參構(gòu)造和無參構(gòu)造兩種。
有參構(gòu)造:
QueryRunner runner = new QueryRunner(DataSourceUtils.getdataSource());
里面的參數(shù)就是連接池,相當(dāng)于連接到了數(shù)據(jù)庫,如果沒有參數(shù)的話,就要自己設(shè)置Connection連接數(shù)據(jù)庫。
無參構(gòu)造:
QueryRunner runner = new QueryRunner();
自己設(shè)置連接:
Connection conn = DataSourceUtils.getConnection();
轉(zhuǎn)載于:https://www.cnblogs.com/tidhy/p/6680674.html
總結(jié)
- 上一篇: JavaWeb基础—JS学习小结
- 下一篇: 读《构建之法》的心得体会