04-JDBC学习手册:JDBC中使用transaction(事务)编程和Javabean定义
生活随笔
收集整理的這篇文章主要介紹了
04-JDBC学习手册:JDBC中使用transaction(事务)编程和Javabean定义
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
JDBC中使用 Transaction(事務)編程
1 事務的四大特性
事務是具備以下特征(ACID) 的工作單元:
(1) 原子性
- 事務的原子性指的是,事務中包含的程序作為數(shù)據(jù)庫的邏輯工作單位,它所做的對數(shù)據(jù)修改操作要么全部執(zhí)行,要么完全不執(zhí)行。
- 原子操作,也就是不可分割的操作,必須 一起成功一起失敗。
(2) 一致性
- 事務的一致性指的是在一個事務執(zhí)行之前和執(zhí)行之后數(shù)據(jù)庫都必須處于一致性狀態(tài)。這種特性稱為事務的一致性。假如數(shù)據(jù)庫的狀態(tài)滿足所有的完整性約束,就說該數(shù)據(jù)庫是一致的。
(3) 分離性
- 分離性指并發(fā)的事務是相互隔離的。即一個事務內(nèi)部的操作及正在操作的數(shù)據(jù)必須封鎖起來,不被其它企圖進行修改的事務看到。
(4) 持久性
- 持久性意味著當系統(tǒng)或介質發(fā)生故障時,確保已提交事務的更新不能丟失。即一旦一個事務提交,DBMS 保證它對數(shù)據(jù)庫中數(shù)據(jù)的改變應該是永久性的,耐得住任何系統(tǒng)故障。持久性通過數(shù)據(jù)庫備份和恢復來保證。
2 事務處理三步曲
① connection.setAutoCommit(false); // 把自動提交關閉 ② 正常的DB操作 // 若有一條 SQL 語句失敗了,自動回滾 ③ connection.commit() // 主動提交 或 connection.rollback() //主動回滾 完整的代碼片段: try{con.setAutoCommit(false); //step ① 把自動提交關閉Statement stm = con.createStatement();stm.executeUpdate("insert into person(id, name, age) values(520, 'X-Man', 18)");stm.executeUpdate("insert into Person(id, name, age) values(521, 'Super', 19)");//step ② 正常的 DB 操作con.commit(); //step ③ 成功主動提交 } catch(SQLException e){try{con.rollback();} catch(Exception e){ e.printStackTrace(); } //step ③ 失敗則主動回滾 }3 JDBC 事務及事務隔離級別
JDBC 事務并發(fā)產(chǎn)生的問題:
① 臟讀(Dirty Reads ) 一個事務讀取了另一個并行事務還未提交的數(shù)據(jù)。
② 不可重復讀( UnRepeatable Read ) 一個事務再次讀取之前的數(shù)據(jù)時,得到的數(shù)據(jù)不一致,被另一個已提交的事務修改。
③ 幻讀(Phantom Read ) 一個事務重新執(zhí)行一個查詢,返回的記錄中包含了因為其它最近提交的事務而產(chǎn)生的新記錄。
為了避免以上三種情況的出現(xiàn),則采用
事務隔離級別:
以 上 的 五 個 事 務 隔 離 級 別 都 是 在 Connection 類 中 定 義 的 靜 態(tài) 常 量 , 使 用setTransactionIsolation(int level) 方法可以設置事務隔離級別。
比如:con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
二、JavaBean 的定義
1 是一個普通的 Java 類 2 在結構上沒有預先的規(guī)定,不需要容器,不需要繼承類或實現(xiàn)接口 3 要求必須放在包中,要求實現(xiàn) Serializable 接口 4 要求有一個無參的構造方法. 5 屬性的類型必須保持唯一,get 方法返回值必須和 set 方法參數(shù)類型一致 6 對每個屬性要有對應的 get 和 set 方法。注:隱藏屬性可以沒有 7 可以有外觀作為顯示控制,事件機制。總結
以上是生活随笔為你收集整理的04-JDBC学习手册:JDBC中使用transaction(事务)编程和Javabean定义的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 03-JDBC学习手册:JDBC中几个重
- 下一篇: 算法--组合数学:杨辉三角数学分析以及J