NO.52 JDBC高級(jí)編程、DAO

一.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添加回滾方法

DBUtil中回滾方法

測(cè)試代碼:

批量添加108個(gè)員工,每批發(fā)送50條數(shù)據(jù).
先增加一個(gè)部門,再給此部門增加一個(gè)員工;在增加員工時(shí),需要使用剛剛增加的部門的ID.
查詢第2頁的員工數(shù)據(jù)

DAO實(shí)體類Emp:

還有許多get.set方法和toString方法未截出

DAO封裝類EmpDao:

根據(jù)ID修改字段方法
根據(jù)ID查詢一個(gè)員工
查詢某一頁的員工

測(cè)試EmpDao:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,819評(píng)論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,031評(píng)論 0 11
  • 事務(wù)簡(jiǎn)介 事務(wù)(Transaction):數(shù)據(jù)庫中保證交易可靠的機(jī)制 JDBC支持?jǐn)?shù)據(jù)庫中的事務(wù)概念 在JDBC中...
    駭客與畫家閱讀 600評(píng)論 0 0
  • JDBC概述 在Java中,數(shù)據(jù)庫存取技術(shù)可分為如下幾類:JDBC直接訪問數(shù)據(jù)庫、JDO技術(shù)、第三方O/R工具,如...
    usopp閱讀 3,642評(píng)論 3 75
  • 人是有記憶曲線的,任何一件事物如果不是經(jīng)常性重復(fù)的使用或提及,那遺忘的速度就會(huì)非???。之所以選擇在一周之后的今天寫...
    咕嘰咕嘰阿吖吚閱讀 599評(píng)論 3 5

友情鏈接更多精彩內(nèi)容