SSH框架企業(yè)級應(yīng)用實戰(zhàn)-全套課件_第1頁
SSH框架企業(yè)級應(yīng)用實戰(zhàn)-全套課件_第2頁
SSH框架企業(yè)級應(yīng)用實戰(zhàn)-全套課件_第3頁
SSH框架企業(yè)級應(yīng)用實戰(zhàn)-全套課件_第4頁
SSH框架企業(yè)級應(yīng)用實戰(zhàn)-全套課件_第5頁
已閱讀5頁,還剩437頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Oracle數(shù)據(jù)庫入門1.Oracle數(shù)據(jù)庫入門.pptx2.操作Oracle數(shù)據(jù)庫.pptx3.Hibernate初體驗.pptx4.HQL查詢語言.pptx5.Hibernate中配置關(guān)聯(lián)映射.pptx6.HQL連接查詢與Hibernate注解.pptx1.Struts2初體驗.pptx2.Struts2配置.pptx3.OGNL表達(dá)式.pptx4.Struts2攔截器.pptx5.SSH框架整合.pptx6.使用Maven構(gòu)建項目.pptx7.使用Struts2實現(xiàn)Ajax.pptx線上線下平臺預(yù)習(xí)2/46本章任務(wù)安裝Oracle數(shù)據(jù)庫創(chuàng)建員工表和部門表,并對表中數(shù)據(jù)進(jìn)行CRUD操作對員工表進(jìn)行分頁查詢按照業(yè)務(wù)的需要,使用SQL語言對員工信息數(shù)據(jù)進(jìn)行查詢3/46本章目標(biāo)理解數(shù)據(jù)庫基本概念掌握安裝、配置和連接數(shù)據(jù)庫了解數(shù)據(jù)類型和操作符會使用SQL語句對數(shù)據(jù)進(jìn)行操作會使用常用內(nèi)置函數(shù)4/46Oracle簡介Oracle(甲骨文)公司1977年,三人合伙創(chuàng)辦(SoftwareDevelopmentLaboratories,SDL)1979年,更名為RelationalSoftwareInc.,RSI1983年,為了突出核心產(chǎn)品,RSI更名為Oracle2002年04月26日,啟用“甲骨文”作為中文注冊商標(biāo)Oracle數(shù)據(jù)庫管理系統(tǒng)Oracle公司的核心產(chǎn)品目前最流行的數(shù)據(jù)庫主要版本Oracle8i/9i(internet)、Oracle10g/11g(grid)基于C/S系統(tǒng)結(jié)構(gòu)5/46Oracle主要組件實例

PMONSMONDBWRLGWRCKPT其他

數(shù)據(jù)文件控制文件控制文件日志文件日志文件參數(shù)文件歸檔日志文件口令文件SGA用戶進(jìn)程服務(wù)器進(jìn)程PGA共享池數(shù)據(jù)緩沖區(qū)日志緩沖區(qū)內(nèi)存結(jié)構(gòu)后臺進(jìn)程數(shù)據(jù)庫數(shù)據(jù)文件數(shù)據(jù)文件6/46數(shù)據(jù)庫表空間1表空間2表空間1包含1個數(shù)據(jù)文件表空間2包含2個數(shù)據(jù)文件data1_01.dbfdata2_01.dbfdata2_02.dbfOracle基本概念表空間全局?jǐn)?shù)據(jù)庫名用于區(qū)分一個數(shù)據(jù)庫的內(nèi)部標(biāo)識全局?jǐn)?shù)據(jù)庫名=數(shù)據(jù)庫名+域名使數(shù)據(jù)庫的取名在整個網(wǎng)絡(luò)環(huán)境中唯一模式和模式對象模式為模式對象的集合每一個用戶對應(yīng)一個模式模式對象是用戶擁有的對象非模式對象與用戶無關(guān),如表空間7/46安裝Oracle安裝注意事項選擇安裝目錄最好是非系統(tǒng)盤安裝時可以直接創(chuàng)建數(shù)據(jù)庫,也可以選擇不創(chuàng)建服務(wù)器的主機(jī)名不能有特殊字符如果在創(chuàng)建數(shù)據(jù)庫階段提示錯誤,繼續(xù)安裝輸入的數(shù)據(jù)庫口令最好記錄在記事本中,以免使用時忘記經(jīng)驗12348/46啟動、配置和鏈接數(shù)據(jù)庫根據(jù)安裝時創(chuàng)建數(shù)據(jù)庫ORCL,使用Sytem用戶登錄前做哪些工作?啟動數(shù)據(jù)庫服務(wù)配置客戶端網(wǎng)絡(luò)服務(wù)每個數(shù)據(jù)庫都有SYS和SYSTEM兩個默認(rèn)用戶,都具有創(chuàng)建用戶權(quán)限使用SYSTEM用戶登錄ORCL數(shù)據(jù)庫問題分析9/46啟動數(shù)據(jù)庫服務(wù)通過選擇打開“服務(wù)”窗口,可以看到Oracle服務(wù)OracleService<SID>:數(shù)據(jù)庫服務(wù)OracleOraDb11g_hom1TNSListener:數(shù)據(jù)庫監(jiān)聽服務(wù)OracleDBConsole<SID>:企業(yè)管理器服務(wù)演示示例1:查看Oracle服務(wù)10/46配置客戶端網(wǎng)絡(luò)服務(wù)服務(wù)器端配置監(jiān)聽器客戶端配置網(wǎng)絡(luò)服務(wù)名tnsnames.oraOracle客戶端listener.oraOracle服務(wù)器監(jiān)聽協(xié)議地址端口號全局?jǐn)?shù)據(jù)庫名稱監(jiān)聽協(xié)議地址端口號服務(wù)名本地網(wǎng)絡(luò)服務(wù)名在安裝服務(wù)器軟件時自動配置一個監(jiān)聽器Oracle中的NetManager工具和NetConfigurationAssistant都能用來配置監(jiān)聽器和網(wǎng)絡(luò)服務(wù)名建議使用NetManager工具注意演示示例2:連接數(shù)據(jù)庫配置11/46SYS和SYSTEM用戶SYS和SYSTEM用戶都是Oracle的系統(tǒng)用戶,都使用SYSTEM表空間,SYS擁有更大的權(quán)限通過SQL*Plus方式連接通過PL/SQLDeveloper方式連接連接數(shù)據(jù)庫SYS用戶SYSTEM用戶地位Oracle的一個超級用戶Oracle默認(rèn)的系統(tǒng)管理員,擁有DBA權(quán)限作用主要用來維護(hù)系統(tǒng)信息和管理實例通常用來管理Oracle數(shù)據(jù)庫的用戶、權(quán)限和存儲等登錄身份只能以SYSDBA或SYSOPER角色登錄只能以Normal方式登錄12/46學(xué)員操作—配置并登錄ORCL數(shù)據(jù)庫2-1訓(xùn)練要點啟動數(shù)據(jù)庫配置數(shù)據(jù)庫連接數(shù)據(jù)庫需求說明教師機(jī)作為服務(wù)器,學(xué)生機(jī)作為客戶端在客戶端創(chuàng)建本地網(wǎng)絡(luò)服務(wù)名myOrcl以System用戶連接服務(wù)器的Orcl數(shù)據(jù)庫訪問Scott用戶下的emp表指導(dǎo)技術(shù)顧問講解需求13/46學(xué)員操作—配置并登錄ORCL數(shù)據(jù)庫2-2實現(xiàn)思路服務(wù)器端啟動操作系統(tǒng)中的數(shù)據(jù)庫服務(wù)和監(jiān)聽服務(wù)客戶端使用“NetManager”工具創(chuàng)建本地網(wǎng)絡(luò)服務(wù)名“myOrcl”客戶端使用SQL*Plus工具,用System用戶連接Orcl數(shù)據(jù)庫訪問Scott用戶下emp表

使用PL/SQLDeveloper工具,以System用戶連接Orcl數(shù)據(jù)庫訪問Scott用戶下emp表SELECT

*FROMScott.emp;指導(dǎo)完成時間:20分鐘14/46共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解15/46小結(jié)使用Oracle數(shù)據(jù)庫的開發(fā)流程安裝Oracle

服務(wù)器軟件創(chuàng)建數(shù)據(jù)庫(安裝時自動創(chuàng)建)配置監(jiān)聽器(安裝時自動配置)啟動Oracle實例(自動啟動服務(wù))創(chuàng)建用戶表空間創(chuàng)建新用戶并授權(quán)安裝Oracle

客戶端軟件配置網(wǎng)絡(luò)服務(wù)名以新用戶登錄Oracle提交SQL查詢服務(wù)器端客戶端后面章節(jié)講解16/46數(shù)據(jù)類型CHAR:VARCHAR2:NCHAR和NVARCHAR2:NUMBER:字符數(shù)據(jù)類型數(shù)值數(shù)據(jù)類型存儲固定長度的字符串存儲可變長度的字符串存儲Unicode字符集類型存儲整數(shù)和浮點數(shù),格式為NUMBER(p,s)數(shù)據(jù)類型描述DATE:TIMESTAMP:BLOB:CLOB:BFILE:LOB數(shù)據(jù)類型DATE:存儲日期和時間數(shù)據(jù)TIMESTAMP:秒值精確到小數(shù)點后6位存儲二進(jìn)制對象存儲字符格式的大型對象將二進(jìn)制數(shù)據(jù)存儲操作系統(tǒng)文件中日期時間數(shù)據(jù)類型不建議使用VARCHAR、INTEGER、FLOAT、DOUBLE等類型經(jīng)驗17/46偽列Oracle中偽列就像一個表列,但是它并沒有存儲在表中偽列可以從表中查詢,但不能插入、更新和刪除它們的值常用的偽列有ROWID和ROWNUMROWID格式ROWID是表中行的存儲地址,該地址可以唯一地標(biāo)識數(shù)據(jù)庫中的一行,可以使用ROWID偽列快速地定位表中的一行AAAR3s

AAE

AAAACX

AAA數(shù)據(jù)對象編號文件編號塊編號

行編號ROWNUM是查詢返回的結(jié)果集中行的序號,可以使用它來限制查詢返回的行數(shù)如何查詢stuInfo表中自然排序的第3條記錄?提問演示示例1:查詢ROWID偽列演示示例2:查詢ROWNUM偽列18/46分頁如何從EMP表中查詢出薪水從高到低排序的第5~9條記錄?使用偽列ROWNUM實現(xiàn)分頁查詢SELECT*FROM(SELECTe.*,rownumrn FROM(SELECT*FROMempORDERBYsalDESC)e)WHERE

rn>=5ANDrn<=9提問分析19/46小結(jié)Oracle中常用數(shù)據(jù)類型字符類型數(shù)值類型日期類型LOB類型Oracle偽列包含ROWNUMROWID20/46數(shù)據(jù)定義語言(DDL)事務(wù)控制語言(TCL)數(shù)據(jù)操縱語言(DML)數(shù)據(jù)控制語言(DCL)CREATEALERTDROPTRUNCATEINSERTUPDATEDELETESELECTCOMMITSAVEPOINTROLLBACKGRANTREVOKESQL語言SQL簡介21/46數(shù)據(jù)定義操縱語言現(xiàn)有stuInfo表和數(shù)據(jù),對該表中數(shù)據(jù)執(zhí)行操作STUNOSTUNAMESTUAGESTUIDSTUSEAT1

張三18

12

李四20

23

王五15

34

張三18

45

張三20

5查看表中行數(shù)取出不重復(fù)數(shù)據(jù)的記錄刪除指定列重復(fù)的行查看當(dāng)前用戶所有數(shù)據(jù)量>100萬的表的信息選擇無重復(fù)的行選擇帶條件和排序的記錄實用列別名利用現(xiàn)有的表創(chuàng)建新表問題演示示例3:創(chuàng)建stuInfo表22/46數(shù)據(jù)操縱語言4-1不重復(fù)顯示所有學(xué)員姓名和年齡按照姓名升序,如果姓名相同按照年齡降序排序SQL>SELECTstuNo,stuName,stuAgeFROMstuInfoWHEREstuAge>17ORDERBYstuNameASC,stuAgeDESC;SQL>SELECT

DISTINCT

stuName,stuAge FROMstuInfo;降序示例演示示例4:操縱stuInfo表23/46升序數(shù)據(jù)操縱語言4-2使用別名顯示姓名、年齡和身份證號列利用現(xiàn)有的表創(chuàng)建新表SQL>CREATETABLEnewStuInfo1ASSELECT*FROMStuInfo;選擇所有數(shù)據(jù)

SQL>SELECTstuNameas"姓

名", stuAgeas"年

齡",stuIDas身份證號FROMStuInfo;含有特殊字符(如空格)加雙引號SQL>CREATETABLEnewStuInfo2ASSELECTstuName,stuNo,stuAgeFROMStuInfo;SQL>CREATETABLEnewStuInfo2ASSELECTstuName,stuNo,stuAgeFROMStuInfoWHERE1=2;選擇指定的列所有數(shù)據(jù)只留表結(jié)構(gòu),不留數(shù)據(jù)示例24/46數(shù)據(jù)操縱語言4-3查看表中行數(shù)取出stuName,stuAge列不存在重復(fù)數(shù)據(jù)的記錄SQL>SELECTstuName,stuAgeFROMstuInfoGROUPBYstuName,stuAgeHAVING(COUNT(stuName||stuAge)<2);重復(fù)的個數(shù)為1SQL>SELECT

COUNT(*)FROMstuInfo;執(zhí)行效率高SQL>SELECT

COUNT(1)FROMstuInfo;執(zhí)行效率低示例25/46數(shù)據(jù)操縱語言4-4刪除stuName、stuAge列重復(fù)的行(保留一行)SQL>DELETEFROMstuInfoWHEREROWIDNOTIN( SELECTmax(ROWID)

FROMstuInfo GROUPBYstuName,stuAge);示例26/46事務(wù)控制語言2-1用于事務(wù)控制的語句SQL>INSERTINTOdeptVALUES(50,'a',null);SQL>INSERTINTOdeptVALUES(60,'b',null);SQL>SAVEPOINTa;SQL>INSERTINTOdeptVALUES(70,'c',null);SQL>ROLLBACKTOSAVEPOINTa;SQL>COMMIT;SQL>SELECT

*FROMdept;下列代碼執(zhí)行后,結(jié)果集是否包含50、60和70的記錄?為什么?COMMITROLLBACKSAVEPOINTROLLBACKTO<SavePoint_Name>提問演示示例5:事務(wù)控制語言27/46事務(wù)控制語言2-2何時結(jié)束事務(wù)?數(shù)據(jù)被提交COMMIT命令執(zhí)行DDL或DCL后與Oracle分離數(shù)據(jù)被撤消ROLLBACK命令服務(wù)器進(jìn)程異常結(jié)束DBA停止會話28/46學(xué)員操作—創(chuàng)建員工表并進(jìn)行操作2-1訓(xùn)練要點創(chuàng)建員工表插入、查詢數(shù)據(jù)添加約束添加、刪除列需求說明使用System用戶登錄,創(chuàng)建員工表employee為員工編號創(chuàng)建主鍵約束,部門編號列創(chuàng)建外鍵約束根據(jù)提供的資料插入數(shù)據(jù),顯示員工表中薪水從高到低排序記錄指導(dǎo)技術(shù)顧問講解需求29/46學(xué)員操作—創(chuàng)建員工表并進(jìn)行操作2-2實現(xiàn)思路使用System用戶連接ORCL數(shù)據(jù)庫創(chuàng)建employee表插入數(shù)據(jù)

可以直接插入數(shù)據(jù),也可以利用SCOTT用戶下emp中

的數(shù)據(jù)進(jìn)行插入添加約束向employee表添加empTel_no和empAddress兩列刪除empTel_no和empAddress兩列按照薪水從高到低顯示數(shù)據(jù)指導(dǎo)完成時間:15分鐘30/46學(xué)員操作—實現(xiàn)分頁查詢需求需求說明使用System用戶登錄,根據(jù)employee表現(xiàn)有記錄,實現(xiàn)查詢員工表中薪水從高到低排序的第5~9條記錄練習(xí)完成時間:15分鐘31/46共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解32/46小結(jié)OracleSQL語言分為DDL、DCL、TCL和DMLDDL對表結(jié)構(gòu)進(jìn)行管理DML對表數(shù)據(jù)進(jìn)行管理TCL進(jìn)行事務(wù)控制DML進(jìn)行用戶權(quán)限管理33/46SQL

操作符SQL操作符集合操作符邏輯操作符比較操作符算術(shù)操作符連接操作符Oracle支持的SQL操作符分類集合操作符UNION(聯(lián)合)UNIONALL(聯(lián)合所有)INTERSECT(交集)MINUS(減集)連接2個字符串;連接字符串和數(shù)字等演示示例6:操作符示例34/46SQL函數(shù)SQL函數(shù)

01.單行函數(shù)每一行只返回一個值可以出現(xiàn)在SELECT子句中和WHERE子句中

03.分析函數(shù)分析函數(shù)根據(jù)一組行來計算聚合值分析函數(shù)為每組記錄返回多個行02.分組函數(shù)根據(jù)分組的情況,返回每組里的一個結(jié)果值可以在使用ORDERBY和HAVING子句中使用日期函數(shù)數(shù)字函數(shù)字符函數(shù)轉(zhuǎn)換函數(shù)其他函數(shù)35/46轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù)將值從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型常用的轉(zhuǎn)換函數(shù)TO_CHAR()TO_DATE()TO_NUMBER()SELECTTO_CHAR(sysdate,'YYYY"年"fmMM"月"fmDD"日"HH24:MI:SS')

FROMdual;

SELECTTO_CHAR(1210.7,'$9,999.00')FROMdual;SELECTTO_DATE('2005-12-06','yyyy-mm-dd')

FROMdual;

SELECTTO_NUMBER('100')FROMdual;示例演示示例7:轉(zhuǎn)換函數(shù)36/46其它函數(shù)轉(zhuǎn)換空值的函數(shù)NVLNVLDECODESELECTename,sal+NVL(comm,0)sal1,

NVL2(comm,sal+comm,sal)sal2,

DECODE(to_char(hiredate,

‘MM

’),

'01',

'一月','02',

'二月',

'03',

'三月','04','四月',

'05','五月','06','六月',

'下半年')

mon

FROMemployee;演示示例8:其他函數(shù)示例37/46分析函數(shù)分析函數(shù)根據(jù)一組行來計算聚合值分析函數(shù)為每組記錄返回多個行以下三個分析函數(shù)用于計算一個行在一組有序行中的排位,序號從1開始返回連續(xù)的排位,不論值是否相等具有相等值的行排位相同,序數(shù)隨后跳躍具有相等值的行排位相同,序號是連續(xù)的RANKDENSE_RANKROW_NUMBER函數(shù)名:分析函數(shù)名字

參數(shù):函數(shù)需要傳入的參數(shù)分區(qū)子句(PARTITIONBY):將查詢結(jié)果分為不同的組,功能類似于GROUPBY語句排序子句(ORDER

BY):將每個分區(qū)進(jìn)行排序

例:函數(shù)名([參數(shù)])OVER([分區(qū)子句][排序子句])RANK()OVER(PARTITIONBYdeptnoORDERBYsalDESC)語法演示示例9:分析函數(shù)38/46學(xué)員操作—使用分析函數(shù)進(jìn)行查詢需求說明公司需要查詢每個部門薪水第二高的員工基本信息(包含并列第二)實現(xiàn)步驟使用分析函數(shù)將員工按照部門分組并且組內(nèi)排序在上面結(jié)果集中選擇排序編號為2的員工信息練習(xí)完成時間:15分鐘39/46學(xué)員操作—SQL語言綜合練習(xí)2-1訓(xùn)練要點SELECT語句WHERE語句GROUPBY語句ORDERBY語句函數(shù)需求說明公司要獲得員工相關(guān)信息指導(dǎo)技術(shù)顧問講解需求40/46學(xué)員操作—SQL語言綜合練習(xí)2-2實現(xiàn)思路顯示職員的就職年度使用round()函數(shù)將入職日期四舍五入到年份利用連接操作符將獲得的年份和“年度”字符串做拼接列出至少有一個雇員的所有部門列出薪金比“SMITH”多的所有雇員列出所有“CLERK”(辦事員)的姓名及其部門名稱列出各種工作類別的最低薪金,顯示最低薪金大于1500的記錄找出各月最后一天受雇的所有雇員獲得當(dāng)月最后一天函數(shù)last_day(hiredate)指導(dǎo)完成時間:20分鐘41/46共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解42/46總結(jié)Oracle數(shù)據(jù)庫入門安裝數(shù)據(jù)庫過程分為安裝數(shù)據(jù)庫軟件和建庫環(huán)節(jié)在服務(wù)器端配置監(jiān)聽服務(wù),客戶端配置網(wǎng)絡(luò)服務(wù)名配置完后在服務(wù)器端啟動數(shù)據(jù)庫服務(wù)和監(jiān)聽服務(wù)連接數(shù)據(jù)庫SQL*PlusPL/SQLDeveloper43/46總結(jié)Oracle數(shù)據(jù)庫入門Oracle中常用數(shù)據(jù)類型字符類型數(shù)值類型日期類型LOB類型Oracle偽列包含ROWNUM、ROWIDSQL語言分為DDL、DCL、TCL和DMLSQL函數(shù)分為單行函數(shù)分組函數(shù)分析函數(shù)44/46問題及作業(yè)集中問題&課后作業(yè)45/46掃我有更多精彩課程呦

操作Oracle數(shù)據(jù)庫

線上線下平臺預(yù)習(xí)48/47本章任務(wù)創(chuàng)建tp_orders表空間創(chuàng)建用戶A_oe用戶并能夠訪問數(shù)據(jù)庫實現(xiàn)部門表中部門編號列的自動插入在A_oe模式下創(chuàng)建A_hr模式下員工表和部門表的同義詞根據(jù)列的情況為客戶表創(chuàng)建相應(yīng)索引根據(jù)訂單情況,在A_oe模式下創(chuàng)建適合的訂單分區(qū)表49/47本章目標(biāo)會創(chuàng)建表空間會創(chuàng)建用戶并授權(quán)掌握序列的使用方法理解同義詞的使用方法了解索引,會創(chuàng)建常用索引了解分區(qū)表50/47表空間分類類別舉例說明永久性表空間SYSTEM,USERS一般保存表、視圖、過程和索引等的數(shù)據(jù)臨時性表空間TEMP只用于保存系統(tǒng)中短期活動的數(shù)據(jù)撤銷表空間UNDO用來幫助回退未提交的事務(wù)數(shù)據(jù)一般不需要建臨時和撤銷表空間,除非把它們轉(zhuǎn)移其他磁盤中以提高性能!經(jīng)驗51/47創(chuàng)建表空間基于應(yīng)用性能和管理方面的考慮,最好為不同的子系統(tǒng)創(chuàng)建獨(dú)立的表空間通過CREATETABLESPACE命令創(chuàng)建表空間CREATETABLESPACEtablespacenameDATAFILE'filename'[SIZEinteger[K|M]][AUTOEXTEND[OFF|ON]];}CREATETABLESPACEtp_hr

DATAFILE

'd:\data\tp_hr01.dbf'SIZE60M;語法示例52/47修改表空間調(diào)整表空間大小更改表空間狀態(tài)只讀--方法一:更改數(shù)據(jù)文件的大小ALTERDATABASEDATAFILE

'D:\DATA\tp_hr01.dbf'

RESIZE80M;--方法二:向表空間內(nèi)添加數(shù)據(jù)文件ALTERTABLESPACEtp_hr

ADDDATAFILE

'E:\DATA\tp_hr02.DBF'SIZE20M

AUTOEXTENDON;ALTERTABLESPACEtp_hrREADONLY;示例示例53/47刪除表空間刪除表空間前先備份再刪除通過DROPTABLESPACE命令創(chuàng)建表空間DROPTABLESPACEtablespacename[INCLUDINGCONTENTS];DROPTABLESPACEtp_hrINCLUDINGCONTENTS;語法示例演示示例1:表空間管理54/47登錄管理后臺SYS和SYSTEM用戶都是Oracle的系統(tǒng)用戶,它們都使用SYSTEM表空間,SYS擁有更大的權(quán)限SYS用戶SYSTEM用戶地位Oracle的一個超級用戶Oracle默認(rèn)的系統(tǒng)管理員,擁有DBA權(quán)限作用主要用來維護(hù)系統(tǒng)信息和管理實例通常用來管理Oracle數(shù)據(jù)庫的用戶、權(quán)限和存儲等登錄身份只能以SYSDBA或SYSOPER角色登錄只能以Normal方式登錄55/47創(chuàng)建用戶CREATEUSERuserIDENTIFIEDBYpassword[DEFAULTTABLESPACEtablespace][TEMPORARYTABLESPACEtablespace][QUOTA{integer[K|M]|UNLIMITED}ONtablespace[QUOTA{integer[K|M]|UNLIMITED}ONtablespace]...][PASSWORDEXPIRE]必須指定用戶名和密碼建議:為用戶指定默認(rèn)表空間或臨時表空間語法演示示例2:用戶管理56/47權(quán)限和角色2-1

權(quán)限指執(zhí)行特定類型SQL命令或訪問其他對象的權(quán)利系統(tǒng)權(quán)限和對象權(quán)限系統(tǒng)權(quán)限允許用戶執(zhí)行某些數(shù)據(jù)庫操作對象權(quán)限允許用戶對某一特定對象執(zhí)行特定的操作角色是具有名稱的一組權(quán)限的組合常用系統(tǒng)預(yù)定義角色CONNECT:臨時用戶RESOURCE:更為可靠和正式的用戶DBA:數(shù)據(jù)庫管理員角色,擁有管理數(shù)據(jù)庫的最高權(quán)限為了簡化權(quán)限管理,引入了角色的概念用戶必須賦予相應(yīng)的權(quán)限57/47權(quán)限和角色2-2--分配權(quán)限或角色GRANTprivilegesorroleTOuser;--撤銷權(quán)限或角色REVOKEprivilegesorroleFROMuser;示例演示示例3:給用戶授權(quán)58/47學(xué)員操作—創(chuàng)建表空間和用戶需求說明以System用戶連接Orcl數(shù)據(jù)庫創(chuàng)建tp_orders表空間大小10M,文件大小可自動擴(kuò)展,允許文件擴(kuò)展的最大限度為無限制創(chuàng)建A_oe用戶的默認(rèn)表空間為tp_orders,密碼為bdqn授予connect、resource權(quán)限授予訪問A_hr用戶的employee表的權(quán)限練習(xí)完成時間:20分鐘59/47共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解60/47小結(jié)表空間分類永久性表空間臨時性表空間撤消表空間用戶與權(quán)限禁止使用sys和system用戶建立數(shù)據(jù)庫應(yīng)用對象禁止grantdbatouser61/47序列序列是用于生成唯一、連續(xù)序號的對象序列可以是升序的,也可以是降序的使用CREATESEQUENCE語句創(chuàng)建序列CREATESEQUENCEtoys_seq STARTWITH10 INCREMENTBY10 MAXVALUE2000 MINVALUE10 NOCYCLE CACHE10;指定第一個序號從10開始指定序號之間的間隔為10表示序列的最大值為2000表示序列的最小值為10在達(dá)到最大值后停止生成下一個值指定內(nèi)存中預(yù)先分配的序號數(shù)示例62/47訪問序列通過序列的偽列來訪問序列的值NEXTVAL返回序列的下一個值CURRVAL返回序列的當(dāng)前值SYS_GUID函數(shù)生成32位的唯一編碼作為主鍵與SYS_GUID函數(shù)區(qū)別在不需要并行的環(huán)境中使用序列作為主鍵在并行的環(huán)境里或者希望避免使用序列的情況下使用函數(shù)SQL>INSERTINTOtoys(toyid,toyname,toyprice)VALUES(toys_seq.NEXTVAL,'TWENTY',25);SQL>INSERTINTOtoys(toyid,toyname,toyprice)VALUES(toys_seq.NEXTVAL,'MAGICPENCIL',75);指定序列的下一個值SQL>SELECTtoys_seq.CURRVALFROMdual;檢索序列的當(dāng)前值63/47更改和刪除序列SQL>ALTERSEQUENCEtoys_seqMAXVALUE5000CYCLE;使用ALTERSEQUENCE語句修改序列,不能更改序列的STARTWITH參數(shù)使用DROPSEQUENCE語句刪除序列SQL>DROPSEQUENCEtoys_seq;演示示例4:使用序列64/47小結(jié)序列的應(yīng)用場景銷售流水表中的流水號充值卡號證書編號商品編號……65/47私有同義詞只能在其模式內(nèi)訪問,且不能與當(dāng)前模式的對象同名公有同義詞可被所有的數(shù)據(jù)庫用戶訪問同義詞同義詞是現(xiàn)有對象的一個別名簡化SQL語句隱藏對象的名稱和所有者提供對對象的公共訪問同義詞共有兩種類型同義詞私有同義詞公有同義詞66/47使用同義詞CREATEORREPLACESYNONYMempFORSCOTT.emp;SCOTT.emp的別名模式名表名私有同義詞公有同義詞CREATEPUBLICSYNONYMpublic_sy_deptFORSCOTT.dept;同義詞名稱SQL>DROPSYNONYMemp;SQL>DROPPUBLICSYNONYMemp_syn;刪除同義詞67/47演示示例5:使用同義詞學(xué)員操作—使用序列生成部門編號需求說明創(chuàng)建一個從60開始、間隔為10、最大值是10000的序列對象dept_seq將該序列產(chǎn)生的值作為部門編號列的值進(jìn)行插入至少插入2條因為工作需要,數(shù)據(jù)庫遷移到另一臺服務(wù)器,請模擬重新創(chuàng)建部門表創(chuàng)建新表命名deptBak作為模擬遷移后的dept表刪除序列,重新創(chuàng)建序列并對遷移后的deptBak表插入新數(shù)據(jù)完成時間:10分鐘提示練習(xí)68/47學(xué)員操作—創(chuàng)建公有同義詞需求說明創(chuàng)建A_hr模式下dept表的公有同義詞,可以允許任何能夠連接上數(shù)據(jù)庫的用戶訪問允許任何能夠連接上數(shù)據(jù)庫的用戶訪問將查詢dept的權(quán)限授予pulic角色練習(xí)提示完成時間:10分鐘69/47共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解70/47索引索引分類物理分類邏輯分類分區(qū)或非分區(qū)索引單列或組合索引B樹索引唯一或非唯一索引正常或反向鍵索引基于函數(shù)索引位圖索引71/47>100<100..90<90..80<80..70<70..60<60..50<50..40<40..30<30..20<20..10<10100,rowid101,rowid102,rowid…最大值90,rowid91,rowid92,rowid93,rowid…30,rowid31,rowid32,rowid33,rowid…最小值0,rowid1,rowid2,rowid…小于等于50大于50

區(qū)段1

區(qū)段2

區(qū)段3B樹索引B樹索引結(jié)構(gòu)SELECT

idFROMtWHEREid=31;31,rowidSELECT

idFROMtWHEREidbetween2and31;30,rowid31,rowid2,rowid…40-30小于等于50CREATEINDEXindex_idONt(id);示例72/47反向鍵索引反向鍵索引CREATEINDEXindex_reverse_empnoONemp(empno)REVERSE;反轉(zhuǎn)索引列鍵值的每個字節(jié)建立在值是連續(xù)增長的列上示例73/47位圖索引位圖索引CREATEBITMAPINDEXindex_bit_jobONemp(job);值/行1234567891011121314ANALYST00000001010010CLERK10000000001101MANAGER00010110000000PTRSIDENT00000000010000SALESMAN01101000000000位圖索引適合創(chuàng)建在低基數(shù)列上位圖索引不直接存儲ROWID,而是存儲字節(jié)位到ROWID的映射減少響應(yīng)時間,節(jié)省空間占用示例74/47B樹索引與位圖索引75/47創(chuàng)建索引時需遵循的原則頻繁搜索、排序、分組的列可以作為索引經(jīng)常用作連接的列(主鍵、外鍵)可作為索引將索引放在一個單獨(dú)的表空間中使用NOLOGGING子句可減少日志信息定期重建索引僅包含幾個不同值的列建議使用位圖索引不要在僅包含幾行的表中創(chuàng)建索引76/47演示示例6:使用索引索引管理刪除索引重建索引DROPINDEXindex_bit_job;ALTERINDEXindex_reverse_empnoREBUILDNOREVERSE;何時刪除索引?(1)應(yīng)用程序不再需要索引(2)執(zhí)行批量加載前(3)索引已損壞何時重建索引?(1)表遷移至新表空間后(2)索引中已包含很多已刪除項(3)需將現(xiàn)有的正常索引轉(zhuǎn)換成反向鍵索引ALTERINDEXindex_nameREBUILDTABLESPACEtablespace_name;77/47學(xué)員操作—為客戶表創(chuàng)建適合的索引需求說明客戶表(customers)中,對客戶編號、名、姓氏、地域列創(chuàng)建適合的索引練習(xí)完成時間:20分鐘78/47共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解79/47表分區(qū)允許用戶將一個表分成多個分區(qū)用戶可以執(zhí)行查詢,只訪問表中的特定分區(qū)將不同的分區(qū)存儲在不同的磁盤,提高訪問性能和安全性可以獨(dú)立地備份和恢復(fù)每個分區(qū)NameAddressStateCountryJohnSmith34thRd.CaliforniaUSMichealClarkeLKRd.CaliforniaUSJackJones9thRoadNewYorkUSBobSimmons12thStreetNewYorkUSJimTaylor53rdRoadNewYorkUS只訪問P1P1分區(qū)P2分區(qū)只訪問P280/47范圍分區(qū)范圍分區(qū)以表中的一個列或一組列的值的范圍分區(qū)PARTITIONBYRANGE(column_name)(PARTITIONpart1VALUELESSTHAN(range1),PARTITIONpart2VALUELESSTHAN(range2),...[PARTITIONpartNVALUELESSTHAN(MAXVALUE)]);以列的值的范圍來作為分區(qū)依據(jù)語法經(jīng)驗演示示例7:范圍分區(qū)81/47間隔分區(qū)實現(xiàn)范圍分區(qū)的自動化INTERVAL代表“間隔”,按照后面括號中的定義間隔添加分區(qū)NUMTOYMINTERVAL(n,'interval_unit')函數(shù)將n轉(zhuǎn)換成interval_unit所指定的值interval_unit可以為:YEAR,MONTHPARTITIONBYRANGE(column_name)

INTERVAL(NUMTOYMINTERVAL(n,'interval_unit'))

(PARTITIONP1VALUESLESSTHAN(range1));語法演示示例8:間隔分區(qū)82/47學(xué)員操作—根據(jù)訂單表創(chuàng)建范圍分區(qū)表需求說明根據(jù)訂單表orders創(chuàng)建范圍分區(qū)表rangeOrders插入‘2013/01/01’數(shù)據(jù),并查看刪除第三個分區(qū)內(nèi)容,并查看根據(jù)Orders表創(chuàng)建范圍分區(qū)表rangeOrders要求創(chuàng)建5個分區(qū)part1分區(qū)為‘2005/01/01’前的數(shù)據(jù)part2分區(qū)為‘2006/01/01’前的數(shù)據(jù)part3分區(qū)為‘2007/01/01’前的數(shù)據(jù)part4分區(qū)為‘2008/01/01’前的數(shù)據(jù)part5分區(qū)為'2009/01/01'前的數(shù)據(jù)練習(xí)提示完成時間:10分鐘83/47學(xué)員操作—根據(jù)訂單表創(chuàng)建間隔分區(qū)表需求說明根據(jù)訂單表orders創(chuàng)建間隔分區(qū)表intervalOrders按訂單日期以年為間隔單位進(jìn)行間隔分區(qū)查詢指定分區(qū)內(nèi)容刪除分區(qū)內(nèi)容,并查看查詢每一個分區(qū)數(shù)據(jù)先查找一共有幾個分區(qū),每個分區(qū)的分區(qū)名稱是什么SELECTtable_name,partition_nameFROMuser_tab_partitionsWHEREtable_name=UPPER('intervalOrders');練習(xí)提示完成時間:10分鐘84/47共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解85/47視圖定義視圖是一個虛擬的表,是經(jīng)過查詢操作后形成的一個結(jié)果應(yīng)用CREATE[ORREPLACE]VIEWview_nameAS<selectstatements>[WITHCHECKOPTION]語法86/47--創(chuàng)建視圖--CREATEORREPLACEVIEWv_employeeASselect*fromemp;--從視圖中檢索數(shù)據(jù)--select*fromv_employee;--刪除視圖--DROPVIEWv_employee;數(shù)據(jù)庫鏈基本概念用來更方便地實現(xiàn)從一個數(shù)據(jù)庫訪問另一個數(shù)據(jù)庫,是在本地建立的一個路徑在數(shù)據(jù)庫中,數(shù)據(jù)庫鏈被看做本地數(shù)據(jù)庫的一個使用對象應(yīng)用語法87/47CREATE[PUBLIC]DATABASELINKlink_nameCONNECTTOusernameIDENTIFIEDBYpasswordUSING'SERVERNAME/SERVERURL';select*fromtablename@link_name數(shù)據(jù)導(dǎo)入導(dǎo)出imp/exp是Oracle提供的導(dǎo)入導(dǎo)出工具,位于Oracle安裝目錄中bin中,如F:\oracle\product\11.2.0\dbhome_1\BIN使用exp導(dǎo)出數(shù)據(jù)導(dǎo)出方式表方式:指定一個表,包括表的定義、數(shù)據(jù)、索引和約束等用戶方式:導(dǎo)出一個用戶的所有對象,包括表、視圖、序列、存儲過程等全數(shù)據(jù)庫方式:導(dǎo)出數(shù)據(jù)庫中的所有對象,僅限于DBA使用imp導(dǎo)入數(shù)據(jù)可以導(dǎo)入自己導(dǎo)出的數(shù)據(jù),也可以導(dǎo)入其他用戶導(dǎo)出的數(shù)據(jù)88/47使用PL/SQLDeveloper導(dǎo)入導(dǎo)出數(shù)據(jù)導(dǎo)出:Tools→ExportTables三種導(dǎo)出方式OracleExport:導(dǎo)出為.dmp格式,使用exp命令SQLInserts:導(dǎo)出為.sql格式,適合小數(shù)據(jù)量PL/SQLDeveloper:導(dǎo)出為.pde格式,僅用于PL/SQLDeveloper導(dǎo)入:Tools→ImportTables三種導(dǎo)入方式分對應(yīng)上面三種89/47總結(jié)操作Oracle數(shù)據(jù)庫表空間分為永久性表空間臨時性表空間撤銷表空間Oracle中的SYSTEM用戶和SYS用戶具有管理權(quán)限,而SCOTT

用戶只有基本的權(quán)限序列用于生成唯一、連續(xù)的序號同義詞是現(xiàn)有數(shù)據(jù)庫對象的別名90/47總結(jié)操作Oracle數(shù)據(jù)庫索引是與表相關(guān)的一個可選結(jié)構(gòu),用于提高SQL語句執(zhí)行的性能索引分為B樹索引唯一索引反向鍵索引位圖索引等表分區(qū)允許將一個表劃分成幾部分,以改善大型應(yīng)用系統(tǒng)的性能91/47問題及作業(yè)集中問題&課后作業(yè)92/47掃我有更多精彩課程呦Hibernate初體驗線上線下平臺預(yù)習(xí)95/41本章任務(wù)搭建Hibernate環(huán)境實現(xiàn)對單表的增刪改操作實現(xiàn)按主鍵查詢96/41本章目標(biāo)理解類和表的映射關(guān)系掌握單表的增刪改掌握按主鍵查詢理解持久化對象的狀態(tài)及其轉(zhuǎn)換97/41Hibernate簡介Hibernate的創(chuàng)始人GavinKingEJB3.0專家委員會成員JBoss核心成員之一《HibernateinAction》的作者優(yōu)秀的Java持久化層解決方案主流的對象-關(guān)系映射工具98/41簡化了JDBC繁瑣的編碼對面向?qū)ο筇匦灾С至己每梢浦残院肏ibernate的缺點不適合需要使用數(shù)據(jù)庫的特定優(yōu)化機(jī)制的情況不適合大規(guī)模的批量數(shù)據(jù)處理Sessionsession=HiberanteUtil.currentSession();Queryquery=session.createQuery("fromUser");List<User>users=(List<User>)query.list();Hibernate的優(yōu)缺點99/41與MyBatis的比較相對于MyBatis的“SQL-Mapping”的ORM實現(xiàn),Hibernate的ORM實現(xiàn)更加完善,提供了對象狀態(tài)管理、級聯(lián)操作等功能完全面向?qū)ο?,語句與數(shù)據(jù)庫無關(guān),開發(fā)者無需關(guān)注SQL的生成,開發(fā)簡單,便于修改,數(shù)據(jù)庫移植性好由于直接使用SQL,MyBatis使用自由度較高100/41使用Hibernate的步驟下載并部署jar文件編寫Hibernate配置文件創(chuàng)建持久化類和映射文件使用HibernateAPI101/41準(zhǔn)備Hibernate3-1下載需要的jar文件Hibernate的官方網(wǎng)站托管網(wǎng)站/projects/hibernate/files/推薦下載:hibernate-distribution-3.6.10.Final-dist.zip演示示例1:搭建Hibernate環(huán)境102/41準(zhǔn)備Hibernate3-1hibernate3.jarlib\required目錄下的jar文件lib\jpa\hibernate-jpa-2.0-api-1.0.1.Final.jarOracle數(shù)據(jù)庫驅(qū)動jar文件演示示例1:搭建Hibernate環(huán)境103/41準(zhǔn)備Hibernate3-2編寫Hibernate配置文件用于配置數(shù)據(jù)庫連接運(yùn)行時所需的各種特性一般命名為“hibernate.cfg.xml”<propertyname="connection.url"> jdbc:oracle:thin:@:1521:orcl</property><propertyname="connection.username">scott</property> <propertyname="connection.password">tiger</property> <propertyname="connection.driver_class"> oracle.jdbc.OracleDriver</property><propertyname="dialect">

org.hibernate.dialect.Oracle10gDialect</property><propertyname="show_sql">true</property><propertyname="format_sql">true</property><propertyname="current_session_context_class">thread</property>示例104/41準(zhǔn)備Hibernate3-3創(chuàng)建持久化類和映射文件定義持久化類(也稱實體類),實現(xiàn)java.io.Serializable接口,添加默認(rèn)構(gòu)造方法配置映射文件(*.hbm.xml)向hibernate.cfg.xml文件中配置映射文件publicclassDeptimplementsSerializable{privateBytedeptNo;privateStringdeptName;privateStringlocation;publicDept(){}//省略getter&setter方法}<hibernate-mapping><class

name="cn.hibernatedemo.entity.Dept"table="`DEPT`"><id

name="deptNo"column="`DEPTNO`"type="java.lang.Byte"><generator

class="assigned"/></id><propertyname="deptName"type="java.lang.String"> <columnname="`DNAME`"></column></property><propertyname="location"type="java.lang.String"column="`LOC`"/></class></hibernate-mapping><session-factory><!--省略其他配置--><mappingresource="cn/hibernatedemo/entity/Dept.hbm.xml"/></session-factory>示例演示示例1:搭建Hibernate環(huán)境105/41小結(jié)搭建Hibernate環(huán)境的步驟引入所需的jar文件配置hibernate.cfg.xml創(chuàng)建持久化類并配置相關(guān)hbm.xml映射文件在hibernate.cfg.xml中引入hbm.xml映射文件106/41租房系統(tǒng)項目介紹2-1租房系統(tǒng)是一個B/S架構(gòu)的信息發(fā)布平臺系統(tǒng)包含的角色注冊用戶非注冊用戶系統(tǒng)功能發(fā)布房屋信息(注冊用戶)瀏覽房屋信息(注冊用戶與非注冊用戶)查看房屋詳情(注冊用戶與非注冊用戶)查詢房屋信息(注冊用戶與非注冊用戶)修改房屋信息(注冊用戶)刪除房屋信息(注冊用戶)演示課程項目107/41租房系統(tǒng)項目介紹2-2租房系統(tǒng)數(shù)據(jù)庫表108/41學(xué)員操作—搭建Hibernate環(huán)境需求說明在MyEclipse中為租房系統(tǒng)創(chuàng)建工程,導(dǎo)入所需的jar文件創(chuàng)建Hibernate配置文件hibernate.cfg.xml創(chuàng)建用戶表對應(yīng)的持久化類User和映射文件User.hbm.xml練習(xí)完成時間:20分鐘109/41共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解110/41使用Hibernate

API2-1向數(shù)據(jù)庫中新增一個部門信息使用HibernateAPI實現(xiàn)示例演示:使用HibernateAPI增加記錄111/41Configurationconf=null;SessionFactorysf=null;Sessionsession=null;Transactiontx=null;try{conf=newConfiguration().configure();sf=conf.buildSessionFactory();session=sf.getCurrentSession();tx=session.beginTransaction();Deptdept=newDept();……

session.save(dept);

mit();}catch(HibernateExceptione){e.printStackTrace();tx.rollback();}使用Hibernate

API2-22.創(chuàng)建SessionFactory1.讀取配置文件5.持久化操作3.打開session4.開始一個事務(wù)6.提交或回滾事務(wù)關(guān)鍵接口和類7.若使用openSession()開啟會話,則需關(guān)閉SessionFactory無須反復(fù)創(chuàng)建!演示:創(chuàng)建工具類管理會話工廠112/41使用Hibernate實現(xiàn)查詢操作通過主鍵值加載指定類型的實例方法區(qū)別一Objectget(Classclazz,Serializableid)若數(shù)據(jù)不存在,返回nullObjectload(Classclazz,Serializableid)若數(shù)據(jù)不存在,使用時拋出ObjectNotFoundException演示示例2:使用Hibernate查詢數(shù)據(jù)113/41tx=session.beginTransaction();Deptdept=(Dept)session.load(Dept.class,newByte("13"));dept.setDeptName("研發(fā)部");mit();tx=session.beginTransaction();Deptdept=(Dept)session.load(Dept.class,newByte("13"));session.delete(dept);mit();使用Hibernate實現(xiàn)部門的修改、刪除修改部門刪除部門修改刪除示例演示示例3:修改、刪除部門記錄114/41小結(jié)使用Hibernate修改指定用戶的電話號碼用戶信息編號11用戶名rose電話號x=session.beginTransaction();Useruser=(User)session.load(User.class,newByte("11"));user.setUsername("rose");user.setTelephone();mit();1.開啟事務(wù)2.加載數(shù)據(jù)3.修改數(shù)據(jù)4.提交事務(wù)現(xiàn)場編程115/41學(xué)員操作—用戶表的增刪改查需求說明使用Hibernate完成對用戶的增加、修改、刪除和查詢按主鍵加載用戶練習(xí)完成時間:20分鐘116/41共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解117/41Hibernate中Java對象的三種狀態(tài)瞬時狀態(tài)(Transient)持久狀態(tài)(Persistent)游離狀態(tài)(Detached)118/41臨時狀態(tài)游離狀態(tài)持久狀態(tài)new語句get()load()save()delete()evict()clear()close()update()delete()垃圾回收垃圾回收三種狀態(tài)之間的轉(zhuǎn)換119/41小結(jié)Hibernate中Java對象的三種狀態(tài)是什么?Java對象是如何在三種狀態(tài)之間轉(zhuǎn)換的?提問120/41學(xué)員操作—輸出程序中對象的狀態(tài)需求說明為以下代碼1、代碼2補(bǔ)充輸出語句,輸出各個階段對象的狀態(tài)//省略部分代碼try{session=sessionFactory.getCurrentSession();tx=session.beginTransaction();

Useruser=(User)session.load(User.class,newInteger("1001"));user.setUsername("rose");mit();}catch(HibernateExceptione){e.printStackTrace();if(tx!=null)tx.rollback();}代碼1//省略部分代碼try{session=sessionFactory.getCurrentSession();tx=session.beginTransaction();

Useruser=(User)session.load(User.class,newInteger("1000"));session.delete(user);mit();}catch(HibernateExceptione){e.printStackTrace();if(tx!=null)tx.rollback();}代碼2練習(xí)完成時間:10分鐘121/41共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解122/41部門編號:10部門名稱:臟檢查與刷新緩存部門對象部門編號:10部門名稱:測試部快照測試部質(zhì)管部不一致臟對象當(dāng)刷新緩存(調(diào)用Session的flush()方法)時,Hiberante會對Session中持久狀態(tài)的對象進(jìn)行檢測,判斷對象的數(shù)據(jù)是否發(fā)生了改變commit()方法會首先刷新緩存123/41刷新緩存機(jī)制刷新緩存就是將數(shù)據(jù)庫同步為與Session緩存一致刷新緩存時會執(zhí)行臟檢查Session會在以下時間點刷新緩存調(diào)用Session的flush()方法調(diào)用Transaction的commit()方法124/41更新數(shù)據(jù)的方法update()方法saveOrUpdate()方法merge()方法演示示例4:merge()方法125/41學(xué)員操作—修改用戶信息需求說明使用Session接口的saveOrUpdate()、merge()方法修改用戶信息,對比兩個方法的區(qū)別主鍵生成器不要使用assigned!練習(xí)注意完成時間:20分鐘126/41共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解127/41總結(jié)5-1了解Hibernate優(yōu)點對面向?qū)ο筇匦灾С至己每梢浦残院萌秉c需要使用數(shù)據(jù)庫的特定優(yōu)化機(jī)制時不適合使用不適合大規(guī)模的批量數(shù)據(jù)處理與MyBatis對比Hibernate的ORM實現(xiàn)更加完善完全面向?qū)ο?,開發(fā)者無需關(guān)注SQL的生成使用自由度不如直接使用SQL語句的MyBatis128/41總結(jié)5-2配置Hibernatehibernate.cfg.xml數(shù)據(jù)庫連接信息運(yùn)行參數(shù)show_sqlformat_sqlcurrent_session_context_class映射文件信息持久化類符合JavaBean規(guī)范建議實現(xiàn)java.io.Serializable接口應(yīng)包含無參構(gòu)造方法建議使用包裝類型129/41總結(jié)5-3映射文件類名.hbm.xmlclass元素name、table屬性id元素name、type、column屬性generator元素class屬性assignedincrementidentitysequencenativeparam元素property元素–name、type、column130/41總結(jié)5-4使用HibernateAPI關(guān)鍵接口和類Configurationconfigure()buildSessionFactory()SessionFactorygetCurrentSession()openSession()SessionbeginTransaction()save()get()/load()delete()update()saveOrUpdate()/merge()131/41總結(jié)5-5Transactioncommit()rollback()持久化類對象的狀態(tài)理解三種狀態(tài)瞬時狀態(tài)(Transient)持久狀態(tài)(Persistent)游離狀態(tài)(Detached)掌握三種狀態(tài)的轉(zhuǎn)換規(guī)律刷新緩存機(jī)制將數(shù)據(jù)庫同步為與Session緩存一致刷新緩存時執(zhí)行臟檢查刷新緩存的時間點調(diào)用Session的flush()方法調(diào)用Transaction的commit()方法132/41問題及作業(yè)集中問題&課后作業(yè)133/41掃我有更多精彩課程呦

HQL查詢語言

線上線下平臺預(yù)習(xí)136/31本章任務(wù)使用HQL完成對數(shù)據(jù)表的查詢完成數(shù)據(jù)表的分頁查詢137/31本章目標(biāo)掌握Query接口掌握HQL的基本使用理解并使用動態(tài)參數(shù)綁定實現(xiàn)數(shù)據(jù)查詢138/31Hibernate支持的查詢方式HQL查詢Criteria查詢原生SQL(NativeSQL)查詢139/31什么是HQLHQL是Hibernate查詢語言(HibernateQueryLanguage)fromcn.hibernatdemo.entity.DeptfromDeptfromDeptwheredeptName='SALES'fromDeptdeptwheredept.locationisnotnullfromEmporderbyhireDate,salarydescselectdeptNo,deptNamefromDept示例140/31執(zhí)行HQL語句執(zhí)行HQL語句的步驟獲取Session對象編寫HQL語句創(chuàng)建Query對象執(zhí)行查詢,得到查詢結(jié)果session=sessionFactory.getCurrentSession();Stringhql="fromEmp";Queryquery=session.createQuery(hql);List<Emp>empList=query.list();session=sessionFactory.getCurrentSession();Stringhql="fromEmp";Queryquery=session.createQuery(hql);Iterator<Emp>empIterator=query.iterate();list()方法iterate()方法示例演示示例1:執(zhí)行HQL語句141/31小結(jié)編寫HQL查詢姓名中包括"明"的所有用戶編號姓名1李明2王明3趙明4孫皓現(xiàn)場編程142/31學(xué)員操作—查詢用戶信息需求說明查詢用戶表中的所有記錄查詢用戶名是bdqn的用戶練習(xí)完成時間:15分鐘143/31共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解144/31在HQL查詢語句中綁定參數(shù)使用字符串拼接查詢條件存在各種弊端"fromUserwherename='"+name+"'"性能低不安全使用占位符按參數(shù)位置綁定fromUserwherename=?按參數(shù)名稱綁定fromUserwherename=:name下標(biāo)從0開始!可讀性好,易維護(hù),推薦使用!問題分析演示示例2:綁定參數(shù)145/31為參數(shù)賦值setXXX():針對具體數(shù)據(jù)類型setXXX(intposition,XXXvalue)setXXX(Stringname,XXXvalue)setParameter():任意類型參數(shù)setParameter(intposition,Objectvalue)setParameter(Stringname,Objectvalue)setProperties():專為命名參數(shù)定制146/31實現(xiàn)動態(tài)查詢查找出符合以下條件的員工信息職位是店員,如:job='CLERK'工資大于1000元,如:sal>1000入職時間在1981年4月1

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論