JDBC數(shù)據(jù)庫連接javaEE.ppt
《JDBC數(shù)據(jù)庫連接javaEE.ppt》由會員分享,可在線閱讀,更多相關(guān)《JDBC數(shù)據(jù)庫連接javaEE.ppt(72頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
JDBC 1 JDBC基礎(chǔ) 2 JDBC基礎(chǔ) JDBC的全稱是JavaDatabaseConnectivity 即Java數(shù)據(jù)庫連接 它是一種可以執(zhí)行SQL語句的JavaAPI JavaAPI是接口 其實(shí)現(xiàn)類由各數(shù)據(jù)庫廠商提供實(shí)現(xiàn) 這些實(shí)現(xiàn)類就是 驅(qū)動(dòng)程序 正是通過JDBC驅(qū)動(dòng)的轉(zhuǎn)換 才使得使用相同JDBCAPI編寫的程序 可以在不同的數(shù)據(jù)庫系統(tǒng)上運(yùn)行良好 3 JDBC基礎(chǔ) JDBC編程步驟 一 4 驅(qū)動(dòng)類對應(yīng)的字符串 MySql com mysql jdbc DriverSQLServer com microsoft sqlserver jdbc SQLServerDriver數(shù)據(jù)庫URL MySql jdbc mysql 127 0 0 1 3306 smsSQLServer jdbc sqlserver 127 0 0 1 1433 DatabaseName sms JDBC基礎(chǔ) JDBC編程步驟 二 5 注意 以上整個(gè)示例代碼 應(yīng)該使用trycatchfinally釋放資源 JDBC基礎(chǔ) JDBC 增刪改操作 6 JDBC基礎(chǔ) JDBC 前幾頁P(yáng)PT代碼分析 Url User Password直接在代碼中定義 如果數(shù)據(jù)庫服務(wù)器稍作變動(dòng) 怎么辦 一個(gè)項(xiàng)目基本針對一個(gè)底層數(shù)據(jù)庫 難道每次操作數(shù)據(jù)庫 都要注冊一次驅(qū)動(dòng)程序嘛 是否可以只注冊一次 獲取數(shù)據(jù)庫連接時(shí) 每次都需要Url User Password 一旦改動(dòng)其中一個(gè)數(shù)據(jù) 意味著要修改所有此處的代碼 釋放資源 每次數(shù)據(jù)庫操作后 都需要釋放資源 難道每次操作后都要寫三次tryclosecatch代碼嘛 7 JDBC基礎(chǔ) JDBC 封裝升級 一 8 JDBC基礎(chǔ) JDBC 封裝升級 二 9 JDBC基礎(chǔ) JDBC 封裝升級 三 10 JDBC基礎(chǔ) JDBC 封裝升級 四 11 JDBC基礎(chǔ) Statement的缺點(diǎn) 同樣的SQL語句 每次都要發(fā)送 不能進(jìn)行有效的緩存 拼接SQL字符串非常容易出現(xiàn)錯(cuò)誤 不能防止惡意數(shù)據(jù) 易產(chǎn)生SQL注入 升級后的新接口PreparedStatement 推薦 預(yù)編譯SQL語句 并進(jìn)行有效的緩存 性能更好 允許使用問號占位符參數(shù) 并且該參數(shù)必須獲得值后才可以執(zhí)行 無需拼接SQL語句 12 SQL注入 wherename or1 1or andpassword 問號占位符參數(shù) INSERTINTOUser id name age birthday VALUES JDBC基礎(chǔ) JDBC PreparedStatement 一 13 JDBC基礎(chǔ) JDBC PreparedStatement 二 14 JDBC基礎(chǔ) JDBC 疑難雜癥 獲取插入記錄后的自增長值日期類型 datetime 文本信息 text varchar的最大長度為65535左右二進(jìn)制文件 blob 15 JDBC基礎(chǔ) JDBC 疑難雜癥 一 自增長值 日期 寫入 16 JDBC基礎(chǔ) JDBC 疑難雜癥 一 自增長值 日期 讀取 17 JDBC基礎(chǔ) JDBC 疑難雜癥 二 文本信息text 寫入 18 JDBC基礎(chǔ) JDBC 疑難雜癥 二 文本信息text 讀取 19 JDBC基礎(chǔ) JDBC 疑難雜癥 三 二進(jìn)制文件 寫入 20 JDBC基礎(chǔ) JDBC 疑難雜癥 三 二進(jìn)制文件 讀取 21 JDBC基礎(chǔ) JDBC 事務(wù)處理 事務(wù)處理就是當(dāng)執(zhí)行多個(gè)SQL指令時(shí) 如果因?yàn)槟硞€(gè)原因使其中一條指令執(zhí)行有錯(cuò)誤 則取消先前執(zhí)行過的所有指令 它的作用是保證各項(xiàng)操作的一致性和完整性 JDBC事務(wù)是通過Connection對象進(jìn)行控制的 其提供了兩種事務(wù) 自動(dòng)提交模式 系統(tǒng)默認(rèn) 每項(xiàng)數(shù)據(jù)庫操作成功后 系統(tǒng)會自動(dòng)提交 手工提交模式 首先必須取消自動(dòng)提交模式 然后通過commit 和rollback 提交和回滾事務(wù) 22 JDBC基礎(chǔ) JDBC 事務(wù)處理 23 JDBC基礎(chǔ) JDBC提供 DatabaseMetaData封裝數(shù)據(jù)庫相關(guān)信息 24 JDBC基礎(chǔ) JDBC提供 ResultSetMetaData封裝結(jié)果集相關(guān)信息 25 連接池 26 連接池 JDBC數(shù)據(jù)庫連接的建立及關(guān)閉是極耗系統(tǒng)資源的操作 之前獲得的數(shù)據(jù)庫連接 一個(gè)數(shù)據(jù)庫連接對象均為一個(gè)物理數(shù)據(jù)庫連接 每次操作都打開一個(gè)物理連接 使用完后立即關(guān)閉連接 頻繁地打開 關(guān)閉連接將造成系統(tǒng)性能低下 數(shù)據(jù)庫連接池的解決方案是 當(dāng)應(yīng)用程序啟動(dòng)時(shí) 系統(tǒng)主動(dòng)建立足夠的數(shù)據(jù)庫連接 并將這些連接組成一個(gè)連接池 每次應(yīng)用程序請求數(shù)據(jù)庫連接時(shí) 無須重新打開連接 而是從池中取出已有的連接使用 使用完后 不再關(guān)閉數(shù)據(jù)庫連接 而是直接將連接歸還給連接池 27 連接池 數(shù)據(jù)庫連接池基本工作原理 28 連接池 自定義數(shù)據(jù)庫連接池 一 29 連接池 自定義數(shù)據(jù)庫連接池 二 30 連接池 自定義數(shù)據(jù)庫連接池 三 31 連接池 自定義數(shù)據(jù)庫連接池 四 32 連接池 自定義數(shù)據(jù)庫連接池 五 33 連接池 非連接池與連接池對比 一 34 連接池 非連接池與連接池對比 二 35 連接池 開源的數(shù)據(jù)源 DBCP 一 36 連接池 開源的數(shù)據(jù)源 DBCP 二 37 連接池 開源的數(shù)據(jù)源 C3P0 一 38 連接池 開源的數(shù)據(jù)源 C3P0 二 39 JDBC常見操作 重點(diǎn) 40 JDBC常見操作 基于數(shù)據(jù)庫的信息系統(tǒng) 每張數(shù)據(jù)表基本都包含如下操作 函數(shù) 新增記錄 修改記錄 刪除記錄根據(jù)主鍵獲取單個(gè)記錄根據(jù)記錄數(shù)獲取所有記錄獲取分頁記錄PS 以上僅為基本操作 實(shí)際中還需包含其它復(fù)雜操作 以上操作中 數(shù)據(jù)的傳入傳出都以對象形式 所有每張數(shù)據(jù)表對應(yīng)一個(gè)實(shí)體類 列名對應(yīng)屬性名 41 JDBC常見操作 后續(xù)以選課系統(tǒng)sms數(shù)據(jù)庫中的class數(shù)據(jù)表作為操作范例 42 PS 數(shù)據(jù)表的列與實(shí)體類的屬性一一對應(yīng) JDBC常見操作 純JDBC操作 一 43 JDBC常見操作 純JDBC操作 二 44 JDBC常見操作 純JDBC操作 三 45 JDBC常見操作 純JDBC操作 四 46 JDBC常見操作 純JDBC操作 五 47 JDBC常見操作 純JDBC操作 六 48 JDBC常見操作 純JDBC操作 七 49 JDBC常見操作 純JDBC操作 八 50 JDBC常見操作 以上全部操作中 太多的代碼重復(fù) 如下 每次都要獲取Connection每次都要?jiǎng)?chuàng)建PreparedStatement每次都要設(shè)置參數(shù)值每次都要執(zhí)行Query或Update操作每次都要關(guān)閉數(shù)據(jù)庫連接因此可以進(jìn)行代碼封裝重構(gòu) 所以市面出現(xiàn)了眾多封裝后的JDBC操作工具類 此PPT中使用ApacheDBUtils注意 對于ApacheDBUtils 要求JavaBean 實(shí)體類 的屬性名必須與結(jié)果集中的列名一一對應(yīng) 51 JDBC常見操作 ApacheDBUtils操作 一 52 JDBC常見操作 ApacheDBUtils操作 二 53 JDBC常見操作 ApacheDBUtils操作 三 54 JDBC常見操作 ApacheDBUtils操作 四 55 JDBC常見操作 ApacheDBUtils操作 五 56 JDBC常見操作 ApacheDBUtils操作 六 57 DAO設(shè)計(jì)模式 58 DAO設(shè)計(jì)模式 JavaEE架構(gòu)大致分為如下幾層 DomainObject 領(lǐng)域?qū)ο?層 此層由系列的POJO PlainOldJavaObject 普通的 傳統(tǒng)的Java對象 組成 這些對象是該系統(tǒng)的DomainObject 往往包含了各自所需要實(shí)現(xiàn)的業(yè)務(wù)邏輯方法 DAO DataAccessObject 數(shù)據(jù)訪問對象 層 此層由系列的DAO組件組成 這些DAO實(shí)現(xiàn)了對數(shù)據(jù)庫的創(chuàng)建 查詢 更新和刪除 CRUD 等原子操作 業(yè)務(wù)邏輯層 此層由系列的業(yè)務(wù)對象組成 這些業(yè)務(wù)邏輯對象實(shí)現(xiàn)了系統(tǒng)所需要的業(yè)務(wù)邏輯方法 這些業(yè)務(wù)邏輯方法可能僅僅用于暴露DomainObject對象所實(shí)現(xiàn)的業(yè)務(wù)邏輯方法 也可能是依賴DAO組件實(shí)現(xiàn)的業(yè)務(wù)邏輯方法 控制器層 此層由系列控制器組成 這些控制器用于攔截用戶請求 并調(diào)用業(yè)務(wù)邏輯組件的業(yè)務(wù)邏輯方法 處理用戶請求 并根據(jù)處理結(jié)果轉(zhuǎn)發(fā)到不同的表現(xiàn)層組件 表現(xiàn)層 此層由系列的JSP頁面 Velocity頁面 PDF文檔視圖組件組成 此層負(fù)責(zé)收集用戶請求 并將顯示處理結(jié)果 59 DAO設(shè)計(jì)模式 大致上 JavaEE應(yīng)用的架構(gòu)如圖所示 60 Model 對應(yīng)數(shù)據(jù)庫表的實(shí)體類 屬性與表中字段對應(yīng) XxDao 接口 定義對XX表的 增刪改查 方法名XxDaoImpl 對應(yīng)接口的實(shí)現(xiàn)類 針對JDBC或Hibernate等的實(shí)現(xiàn) XxService 接口 實(shí)現(xiàn)業(yè)務(wù)邏輯 定義實(shí)現(xiàn)系統(tǒng)功能的方法名XxServiceImpl 對應(yīng)接口的實(shí)現(xiàn)類 調(diào)用Dao中的方法 外加某些業(yè)務(wù)邏輯判斷 DAO設(shè)計(jì)模式 DAO實(shí)現(xiàn) 一 Model 61 DAO設(shè)計(jì)模式 DAO實(shí)現(xiàn) 二 Dao 62 DAO設(shè)計(jì)模式 DAO實(shí)現(xiàn) 三 JdbcUtil 63 DAO設(shè)計(jì)模式 DAO實(shí)現(xiàn) 四 DaoImpl 一 64 DAO設(shè)計(jì)模式 DAO實(shí)現(xiàn) 四 DaoImpl 二 65 DAO設(shè)計(jì)模式 DAO實(shí)現(xiàn) 四 DaoImpl 三 66 DAO設(shè)計(jì)模式 DAO實(shí)現(xiàn) 四 DaoImpl 四 67 DAO設(shè)計(jì)模式 DAO實(shí)現(xiàn) 四 DaoImpl 五 68 DAO設(shè)計(jì)模式 DAO實(shí)現(xiàn) 四 DaoImpl 六 69 DAO設(shè)計(jì)模式 DAO實(shí)現(xiàn) 五 Main驗(yàn)證 一 70 DAO設(shè)計(jì)模式 DAO實(shí)現(xiàn) 五 Main驗(yàn)證 二 71 答疑 Q A 72- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- JDBC 數(shù)據(jù)庫連接 javaEE
鏈接地址:http://zhongcaozhi.com.cn/p-8619805.html