JDBC數(shù)據(jù)庫連接javaEE.ppt

上傳人:xin****828 文檔編號:14601404 上傳時間:2020-07-25 格式:PPT 頁數(shù):72 大?。?.26MB
收藏 版權(quán)申訴 舉報 下載
JDBC數(shù)據(jù)庫連接javaEE.ppt_第1頁
第1頁 / 共72頁
JDBC數(shù)據(jù)庫連接javaEE.ppt_第2頁
第2頁 / 共72頁
JDBC數(shù)據(jù)庫連接javaEE.ppt_第3頁
第3頁 / 共72頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《JDBC數(shù)據(jù)庫連接javaEE.ppt》由會員分享,可在線閱讀,更多相關(guān)《JDBC數(shù)據(jù)庫連接javaEE.ppt(72頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、JDBC,1,JDBC基礎(chǔ),2,JDBC基礎(chǔ),JDBC的全稱是 Java Database Connectivity,即Java數(shù)據(jù)庫連接,它是一種可以執(zhí)行SQL語句的Java API。 Java API是接口,其實現(xiàn)類由各數(shù)據(jù)庫廠商提供實現(xiàn),這些實現(xiàn)類就是“驅(qū)動程序”。 正是通過JDBC驅(qū)動的轉(zhuǎn)換,才使得使用相同JDBC API編寫的程序,可以在不同的數(shù)據(jù)庫系統(tǒng)上運行良好。,3,JDBC基礎(chǔ),JDBC編程步驟(一):,4,驅(qū)動類對應(yīng)的字符串: MySql:com.mysql.jdbc.Driver SQLServer:com.microsoft.sqlserver.jdbc

2、.SQLServerDriver 數(shù)據(jù)庫URL: MySql:jdbc:mysql://127.0.0.1:3306/sms SQLServer:jdbc:sqlserver://127.0.0.1:1433;DatabaseName=sms,JDBC基礎(chǔ),JDBC編程步驟(二):,5,注意:以上整個示例代碼,應(yīng)該使用try catch finally釋放資源,JDBC基礎(chǔ),JDBC_增刪改操作:,6,JDBC基礎(chǔ),JDBC_前幾頁PPT代碼分析: Url、User、Password直接在代碼中定義,如果數(shù)據(jù)庫服務(wù)器稍作變動,怎么辦? 一個項目基本針對一個底層數(shù)據(jù)庫,難道每次操作數(shù)

3、據(jù)庫,都要注冊一次驅(qū)動程序嘛?是否可以只注冊一次? 獲取數(shù)據(jù)庫連接時,每次都需要Url、User、Password,一旦改動其中一個數(shù)據(jù),意味著要修改所有此處的代碼。 釋放資源,每次數(shù)據(jù)庫操作后,都需要釋放資源,難道每次操作后都要寫三次try close catch代碼嘛?,7,JDBC基礎(chǔ),JDBC_封裝升級(一):,8,JDBC基礎(chǔ),JDBC_封裝升級(二):,9,JDBC基礎(chǔ),JDBC_封裝升級(三):,10,JDBC基礎(chǔ),JDBC_封裝升級(四):,11,JDBC基礎(chǔ),Statement的缺點: 同樣的SQL語句,每次都要發(fā)送,不能進(jìn)行有效的緩存。 拼接SQL字符串非常容易出現(xiàn)錯誤。

4、不能防止惡意數(shù)據(jù),易產(chǎn)生SQL注入。 升級后的新接口PreparedStatement(推薦): 預(yù)編譯SQL語句,并進(jìn)行有效的緩存,性能更好。 允許使用問號占位符參數(shù),并且該參數(shù)必須獲得值后才可以執(zhí)行。 無需拼接SQL語句。,12,SQL注入:“...where name=” + “or 1=1 or” + “and password=”+ “”+ “”,問號占位符參數(shù):INSERT INTO User(id,name,age,birthday) VALUES(?,?,?,?);,JDBC基礎(chǔ),JDBC_ PreparedStatement(一):,13,JDBC基礎(chǔ),JDBC_ Prepa

5、redStatement(二):,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_

6、疑難雜癥(三):二進(jìn)制文件(讀?。?21,JDBC基礎(chǔ),JDBC_事務(wù)處理: 事務(wù)處理就是當(dāng)執(zhí)行多個SQL指令時,如果因為某個原因使其中一條指令執(zhí)行有錯誤,則取消先前執(zhí)行過的所有指令。它的作用是保證各項操作的一致性和完整性。 JDBC事務(wù)是通過Connection對象進(jìn)行控制的。其提供了兩種事務(wù): 自動提交模式:系統(tǒng)默認(rèn),每項數(shù)據(jù)庫操作成功后,系統(tǒng)會自動提交。 手工提交模式:首先必須取消自動提交模式,然后通過commit()和rollback()提交和回滾事務(wù)。,22,JDBC基礎(chǔ),JDBC_事務(wù)處理:,23,JDBC基礎(chǔ),JDBC提供:DatabaseMetaData封裝數(shù)據(jù)庫相關(guān)信

7、息,24,JDBC基礎(chǔ),JDBC提供:ResultSetMetaData封裝結(jié)果集相關(guān)信息,25,連接池,26,連接池,JDBC數(shù)據(jù)庫連接的建立及關(guān)閉是極耗系統(tǒng)資源的操作。之前獲得的數(shù)據(jù)庫連接,一個數(shù)據(jù)庫連接對象均為一個物理數(shù)據(jù)庫連接,每次操作都打開一個物理連接,使用完后立即關(guān)閉連接。頻繁地打開、關(guān)閉連接將造成系統(tǒng)性能低下。 數(shù)據(jù)庫連接池的解決方案是:當(dāng)應(yīng)用程序啟動時,系統(tǒng)主動建立足夠的數(shù)據(jù)庫連接,并將這些連接組成一個連接池。每次應(yīng)用程序請求數(shù)據(jù)庫連接時,無須重新打開連接,而是從池中取出已有的連接使用,使用完后,不再關(guān)閉數(shù)據(jù)庫連接,而是直接將連接歸還給連接池。,27,連接池,數(shù)據(jù)庫連接池

8、基本工作原理:,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常見操作(重點),40,JDBC常見操作,基于數(shù)據(jù)庫的信息系統(tǒng),每張數(shù)據(jù)表基

9、本都包含如下操作(函數(shù)): 新增記錄、修改記錄、刪除記錄 根據(jù)主鍵獲取單個記錄 根據(jù)記錄數(shù) 獲取所有記錄 獲取分頁記錄 PS:以上僅為基本操作,實際中還需包含其它復(fù)雜操作。 以上操作中,數(shù)據(jù)的傳入傳出都以對象形式,所有每張數(shù)據(jù)表對應(yīng)一個實體類(列名對應(yīng)屬性名),41,JDBC常見操作,后續(xù)以選課系統(tǒng)sms數(shù)據(jù)庫中的class數(shù)據(jù)表作為操作范例:,42,PS:數(shù)據(jù)表的列與實體類的屬性一一對應(yīng),JDBC常見操作,純JDBC操作(一):,43,JDBC常見操作,純JDBC操作(二):,44,JDBC常見操作,純JDBC操作(三):,45,JDBC常見操作,純JDBC操作(四):,46,JDBC常見操

10、作,純JDBC操作(五):,47,JDBC常見操作,純JDBC操作(六):,48,JDBC常見操作,純JDBC操作(七):,49,JDBC常見操作,純JDBC操作(八):,50,JDBC常見操作,以上全部操作中,太多的代碼重復(fù),如下: 每次都要獲取Connection 每次都要創(chuàng)建PreparedStatement 每次都要設(shè)置參數(shù)值 每次都要執(zhí)行Query或Update操作 每次都要關(guān)閉數(shù)據(jù)庫連接 因此可以進(jìn)行代碼封裝重構(gòu),所以市面出現(xiàn)了眾多封裝后的JDBC操作工具類,此PPT中使用 Apache DBUtils 注意:對于Apache DBUtils,要求JavaBean(實體類)的屬性名

11、必須與結(jié)果集中的列名一一對應(yīng)?。?!,51,JDBC常見操作,Apache DBUtils操作(一):,52,JDBC常見操作,Apache DBUtils操作(二):,53,JDBC常見操作,Apache DBUtils操作(三):,54,JDBC常見操作,Apache DBUtils操作(四):,55,JDBC常見操作,Apache DBUtils操作(五):,56,JDBC常見操作,Apache DBUtils操作(六):,57,DAO設(shè)計模式,58,DAO設(shè)計模式,Java EE架構(gòu)大致分為如下幾層: Domain Object(領(lǐng)域?qū)ο螅樱捍藢佑上盗械腜OJO(Plain Old J

12、ava Object,普通的、傳統(tǒng)的Java對象)組成,這些對象是該系統(tǒng)的Domain Object,往往包含了各自所需要實現(xiàn)的業(yè)務(wù)邏輯方法。 DAO(Data Access Object,數(shù)據(jù)訪問對象)層:此層由系列的DAO組件組成,這些DAO實現(xiàn)了對數(shù)據(jù)庫的創(chuàng)建、查詢、更新和刪除(CRUD)等原子操作。 業(yè)務(wù)邏輯層:此層由系列的業(yè)務(wù)對象組成,這些業(yè)務(wù)邏輯對象實現(xiàn)了系統(tǒng)所需要的業(yè)務(wù)邏輯方法。這些業(yè)務(wù)邏輯方法可能僅僅用于暴露DomainObject對象所實現(xiàn)的業(yè)務(wù)邏輯方法,也可能是依賴DAO組件實現(xiàn)的業(yè)務(wù)邏輯方法。 控制器層:此層由系列控制器組成,這些控制器用于攔截用戶請求,并調(diào)用業(yè)務(wù)邏輯組件

13、的業(yè)務(wù)邏輯方法,處理用戶請求,并根據(jù)處理結(jié)果轉(zhuǎn)發(fā)到不同的表現(xiàn)層組件。 表現(xiàn)層:此層由系列的JSP頁面、Velocity頁面、PDF文檔視圖組件組成。此層負(fù)責(zé)收集用戶請求,并將顯示處理結(jié)果。,59,DAO設(shè)計模式,大致上,Java EE 應(yīng)用的架構(gòu)如圖所示:,60,Model:對應(yīng)數(shù)據(jù)庫表的實體類(屬性與表中字段對應(yīng)),XxDao:接口,定義對XX表的“增刪改查”方法名 XxDaoImpl:對應(yīng)接口的實現(xiàn)類,針對JDBC或Hibernate等的實現(xiàn),XxService:接口,實現(xiàn)業(yè)務(wù)邏輯,定義實現(xiàn)系統(tǒng)功能的方法名 XxServiceImpl:對應(yīng)接口的實現(xiàn)類,調(diào)用Dao中的方法,外加某些業(yè)務(wù)邏輯

14、判斷,DAO設(shè)計模式,DAO實現(xiàn)(一):Model,61,DAO設(shè)計模式,DAO實現(xiàn)(二):Dao,62,DAO設(shè)計模式,DAO實現(xiàn)(三):JdbcUtil,63,DAO設(shè)計模式,DAO實現(xiàn)(四):DaoImpl(一),64,DAO設(shè)計模式,DAO實現(xiàn)(四):DaoImpl(二),65,DAO設(shè)計模式,DAO實現(xiàn)(四):DaoImpl(三),66,DAO設(shè)計模式,DAO實現(xiàn)(四):DaoImpl(四),67,DAO設(shè)計模式,DAO實現(xiàn)(四):DaoImpl(五),68,DAO設(shè)計模式,DAO實現(xiàn)(四):DaoImpl(六),69,DAO設(shè)計模式,DAO實現(xiàn)(五):Main驗證(一),70,DAO設(shè)計模式,DAO實現(xiàn)(五):Main驗證(二),71,答疑,Q & A,72,

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!