一.JDBC中的事務(wù)管理
1.自動(dòng)管理事務(wù)
JDBC會(huì)自動(dòng)管理事務(wù)
每次調(diào)用executeUpdate()時(shí),它會(huì)自動(dòng)commit
一個(gè)業(yè)務(wù)只需執(zhí)行一次DML時(shí),采用自動(dòng)管理事務(wù)
2.手動(dòng)管理事務(wù)
取消自動(dòng)提交:conn.setAutoCommit(false)
采用手動(dòng)提交:conn.commit()
異常時(shí)要回滾:conn.rollback()
一個(gè)業(yè)務(wù)需要執(zhí)行多次DML時(shí),采用手動(dòng)管理事務(wù)
3.什么是事務(wù)?
滿足如下規(guī)則的數(shù)據(jù)庫訪問叫事務(wù)
1)原子性:事務(wù)是一個(gè)完整的過程,要么都成功,要么都失敗.
2)一致性:事務(wù)前后的數(shù)據(jù)要保持一致,即收支平衡.
3)隔離性:事務(wù)訪問過程中的數(shù)據(jù),不能被別人訪問.
4)持久性:事務(wù)一旦完成,就永久生效.
要整體的看待事務(wù)的概念,不要割裂來理解.
二.批量添加
1.使用場(chǎng)景
在企業(yè)軟件上線時(shí),導(dǎo)入原始數(shù)據(jù),則需要進(jìn)行批量添加.
2.如何實(shí)現(xiàn)
批量添加數(shù)據(jù)的前提是它們的SQL一樣

三.獲取自動(dòng)生成的主鍵
1.使用場(chǎng)景
在增加主外鍵對(duì)應(yīng)的2張表的數(shù)據(jù)時(shí),需要獲得主表自動(dòng)生成的主鍵.

2.如何獲取
反查
insert into uservalues(seq.nextval,?,?)
select * from user whereusername=?
記住序列的值
select seq.nextval fromdual
insert into uservalues(?,?,?)
通過ps獲取該值
詳見案例
四.分頁查詢
1.假分頁(內(nèi)存分頁)
第1次查詢就查出所有數(shù)據(jù),然后將數(shù)據(jù)存入內(nèi)存(List)
第N次查詢則從內(nèi)存(List)中獲取某一頁的數(shù)據(jù)
特點(diǎn):第1次查詢很慢,以后查詢快,耗內(nèi)存
只適合數(shù)據(jù)量很小的項(xiàng)目
2.真分頁(物理分頁)
每次查詢都從數(shù)據(jù)庫中直接查詢出一頁數(shù)據(jù)
特點(diǎn):每次查詢速度都較快,不耗內(nèi)存
適合所有的項(xiàng)目
3.Oracle分頁SQL
select * from ( select e.*,rownum r from ( select * from emps order by empno ) e ) where r between 1 and 10
4.分頁條件的計(jì)算

五.DAO
1.說明
接口、工廠類后面再討論
2.封裝的思想

3.什么是JavaBean?
滿足如下規(guī)范的類:
該類必須有包
該類必須有無參構(gòu)造器
該類必須實(shí)現(xiàn)序列化接口
該類通常有g(shù)et和set方法
代碼示例:為DBUtil添加回滾方法

測(cè)試代碼:



DAO實(shí)體類Emp:

DAO封裝類EmpDao:



測(cè)試EmpDao:
