hibernate系列0402上午02配置文件_第1頁(yè)
hibernate系列0402上午02配置文件_第2頁(yè)
hibernate系列0402上午02配置文件_第3頁(yè)
hibernate系列0402上午02配置文件_第4頁(yè)
hibernate系列0402上午02配置文件_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、北京傳智播客教育 Hibernate配置文件李 若 亮北京傳智播客教育 Hibernate數(shù)據(jù)模型POJOHibernate數(shù)據(jù)模型用于封裝數(shù)據(jù),開發(fā)時(shí)候需要遵從如下規(guī)范提供公共無參的構(gòu)造方法(可使用自動(dòng)生成的)如果使用投影技術(shù),一定要顯式聲明公共無參的構(gòu)造方法提供一個(gè)標(biāo)識(shí)屬性,作為對(duì)象的主鍵,映射數(shù)據(jù)庫(kù)表主鍵通常使用uuid作為主鍵對(duì)所有其他屬性進(jìn)行私有化聲明,并進(jìn)行標(biāo)準(zhǔn)封裝屬性聲明時(shí)使用封裝類模型,避免使用基本數(shù)據(jù)類型不要使用final修飾符(否則將無法生成代理對(duì)象進(jìn)行優(yōu)化)北京傳智播客教育 持久化對(duì)象唯一標(biāo)識(shí)OID數(shù)據(jù)庫(kù)中使用主鍵可以區(qū)分兩個(gè)數(shù)據(jù)是否相同Java語(yǔ)言中使用對(duì)象的內(nèi)存地址區(qū)

2、分對(duì)象是否相同Hibernate中使用OID區(qū)分對(duì)象是否相同Hibernate認(rèn)為每一個(gè)不同的對(duì)象應(yīng)該具有一個(gè)唯一的標(biāo)識(shí),稱這個(gè)標(biāo)識(shí)為OID北京傳智播客教育 OID的選取規(guī)則Java對(duì)象中可以使用任意屬性作為OID,為什么要使用uuid作為唯一標(biāo)識(shí)自然主鍵:具有業(yè)務(wù)含義例如個(gè)人信息中的身份證號(hào),不僅是唯一的,而且還具有業(yè)務(wù)含義,這種屬性雖然可以做為OID,但是其具有一定的業(yè)務(wù)含義。選擇OID盡量避免使用具有業(yè)務(wù)含義的屬性代理主鍵:不具有業(yè)務(wù)含義聲明一個(gè)不具有任何業(yè)務(wù)含義的屬性,僅用于區(qū)分對(duì)象,這種屬性即便暴漏給最終用戶查看,也不具有安全隱患OID選擇應(yīng)盡量避免使用自然主鍵,改用代理主鍵北京傳智

3、播客教育 對(duì)象屬性的類型選擇Java對(duì)象中的屬性描述對(duì)象具有的狀態(tài),在對(duì)狀態(tài)進(jìn)行描述時(shí),應(yīng)避免使用基本數(shù)據(jù)類型,改用對(duì)應(yīng)的封裝類模型基本數(shù)據(jù)有一個(gè)默認(rèn)值的特點(diǎn),特性在對(duì)象數(shù)據(jù)封裝時(shí)存在著數(shù)據(jù)隱患,一旦基本數(shù)據(jù)類型取值為默認(rèn)值,開發(fā)者將無法區(qū)分該值是用戶輸入數(shù)據(jù)還是未輸入數(shù)據(jù)由系統(tǒng)默認(rèn)給出封裝類數(shù)據(jù)類型可以使用是否為null來判定該數(shù)據(jù)是來自于用戶輸入還是未輸入北京傳智播客教育 Hibernate配置文件分類Hibernate配置文件分為兩大類映射配置文件 (多個(gè))*Model.hbm.xml系統(tǒng)配置文件 (一個(gè))hibernate.cfg.xml北京傳智播客教育 Hibernate映射配置hb

4、m.xml(重點(diǎn))Hibernate映射配置文件用于配置Hibernate框架中使用的模型類與數(shù)據(jù)庫(kù)表間的關(guān)系,共包含4個(gè)部分類與表的映射主鍵的映射屬性與字段的映射關(guān)系的映射 (后面詳細(xì)講解)北京傳智播客教育 Hibernate映射配置(了解)Hibernate中可以不使用*.hbm.xml的命名格式,可以寫成任意的XML格式,但是框架推薦使用標(biāo)準(zhǔn)格式來進(jìn)行映射文件的命名,同時(shí)標(biāo)準(zhǔn)的命名格式還可以兼容手動(dòng)添加映射對(duì)象的格式北京傳智播客教育 一級(jí)子元素class(類與表的映射)class元素用于指定對(duì)象關(guān)系映射中的類與表的關(guān)系name:模型類的全路徑名格式table:數(shù)據(jù)庫(kù)表名schema:數(shù)據(jù)

5、庫(kù)名如果配置該屬性,在數(shù)據(jù)庫(kù)連接配置中可省去數(shù)據(jù)庫(kù)名配置;如果不配置該屬性,則使用連接字符串url中配置的數(shù)據(jù)庫(kù)北京傳智播客教育 class子元素id(主鍵的映射)主鍵映射要配置數(shù)據(jù)模型OID與數(shù)據(jù)庫(kù)表主鍵關(guān)系常用屬性name:數(shù)據(jù)模型中的OID,通常使用uuid屬性(必須)column:數(shù)據(jù)庫(kù)表的主鍵,通常使用uuid字段(可選)如省略column配置,則默認(rèn)column值與name值相同其他屬性type:標(biāo)識(shí)屬性或字段的類型(兼容Java、DB、Hibernate類型)length:標(biāo)識(shí)數(shù)據(jù)庫(kù)字段的長(zhǎng)度上述兩個(gè)屬性主要用于配合自動(dòng)生成DDL語(yǔ)句使用北京傳智播客教育 id子元素generat

6、or(主鍵生成策略)手工控制assigned(不限制類型)數(shù)據(jù)庫(kù)自動(dòng)生成uuid(字符串類型)increment(整型數(shù)值類型)identity (整型數(shù)值類型)sequence (整型數(shù)值類型)native(整型數(shù)值類型)北京傳智播客教育 assignedassigned策略是由程序員手工控制輸入數(shù)據(jù)模型OID的一種id生成策略assigned策略不限定數(shù)據(jù)庫(kù)中id字段的類型assigned策略無法保障id的不重復(fù)性assigned策略通常配合外部自定義的id生成策略使用,否則將具有很大的風(fēng)險(xiǎn)性北京傳智播客教育 uuid(Universally Unique Identifier)uuid策

7、略是由以下4種數(shù)據(jù)聯(lián)合計(jì)算得出的一種OID生成策略IP地址JVM啟動(dòng)時(shí)間(精確到250ms)當(dāng)前系統(tǒng)時(shí)間JVM提供的計(jì)數(shù)器(保障唯一)uuid策略要求數(shù)據(jù)庫(kù)中id字段為字符串類型uuid策略可以保障id的唯一性,因此不具有風(fēng)險(xiǎn)性 北京傳智播客教育 incrementincrement策略是由Hibernate內(nèi)部控制生成OID的一種id生成策略increment策略要求數(shù)據(jù)庫(kù)中id字段為整型數(shù)值類型increment策略首先從對(duì)應(yīng)數(shù)據(jù)庫(kù)表中取出當(dāng)前已使用的最大id值max,然后在此基礎(chǔ)上+1,提供給當(dāng)前要操作數(shù)據(jù),完成主鍵唯一性增長(zhǎng),可兼容數(shù)據(jù)庫(kù)increment策略雖然可以保障id的唯一性,

8、但是如果多個(gè)連接同時(shí)對(duì)一個(gè)表進(jìn)行操作時(shí),可能獲取到相同的max值,導(dǎo)致相同id的出現(xiàn),因此需要更多的配置,來控制數(shù)據(jù)庫(kù)的并發(fā)策略不推薦使用鑒定完畢北京傳智播客教育 identityidentity策略是由數(shù)據(jù)庫(kù)底層控制生成OID的一種id生成策略identity策略要求數(shù)據(jù)庫(kù)中id字段為整型數(shù)值類型,并且要求設(shè)置成自增特性identity只能應(yīng)用于數(shù)據(jù)庫(kù)提供主鍵自增策略的數(shù)據(jù)庫(kù)實(shí)現(xiàn),不能全兼容所有數(shù)據(jù)庫(kù),MySQL可用identity策略由數(shù)據(jù)庫(kù)底層實(shí)現(xiàn),即便申請(qǐng)了一個(gè)id不使用,也不影響下一個(gè)id的獲取,因此線程安全北京傳智播客教育 sequencesequence策略是由數(shù)據(jù)庫(kù)底層控制生成

9、OID的一種id生成策略sequence策略要求數(shù)據(jù)庫(kù)中id字段為整型數(shù)值類型sequence只能應(yīng)用于提供序列支持的數(shù)據(jù)庫(kù)實(shí)現(xiàn),不能全兼容所有數(shù)據(jù)庫(kù),Oracle可用sequence策略由數(shù)據(jù)庫(kù)底層實(shí)現(xiàn),id生成控制交由數(shù)據(jù)庫(kù)管理,是線程安全的策略北京傳智播客教育 nativenative策略是一種設(shè)計(jì)性O(shè)ID生成策略native會(huì)根據(jù)你所使用的數(shù)據(jù)庫(kù)類型,在下列各種生成策略中自動(dòng)選擇對(duì)應(yīng)的id生成策略identitysequencehilo北京傳智播客教育 復(fù)合主鍵/聯(lián)合主鍵/多主鍵(了解)復(fù)合主鍵指在一個(gè)數(shù)據(jù)模型使用兩個(gè)或兩個(gè)以上的屬性來作為唯一性標(biāo)識(shí)用于區(qū)分?jǐn)?shù)據(jù)復(fù)合主鍵在目前的開發(fā)中極

10、少使用,主要是為了兼容早期的遺留系統(tǒng)復(fù)合主鍵開發(fā)方式:注意:復(fù)合主鍵與主鍵只能選擇其中一種使用北京傳智播客教育 class子元素property(屬性與字段映射)常用屬性name:數(shù)據(jù)模型中的屬性名,也就是Java字段名(必須)column:數(shù)據(jù)庫(kù)表的字段名(可選)如省略column配置,則默認(rèn)column值與name值相同其他屬性type:標(biāo)識(shí)屬性或字段的類型(兼容Java、DB、Hibernate類型)length:標(biāo)識(shí)數(shù)據(jù)庫(kù)字段的長(zhǎng)度not-null:是否為空unique:是否唯一北京傳智播客教育 屬性與字段的映射要配置數(shù)據(jù)模型中聲明的屬性與字段之間的對(duì)應(yīng)關(guān)系,共有以下三種格式格式一:格

11、式二:格式三:property格式格式三是將格式一或二中有關(guān)數(shù)據(jù)庫(kù)相關(guān)的屬性單獨(dú)配置成子元素北京傳智播客教育 Hibernate映射配置北京傳智播客教育 Hibernate系統(tǒng)配置cfg.xml(重點(diǎn))Hibernate系統(tǒng)配置文件用于配置Hibernate框架的系統(tǒng)設(shè)置信息,共包含4個(gè)部分?jǐn)?shù)據(jù)庫(kù)連接的配置可選配置資源注冊(cè)二級(jí)緩存(后面詳細(xì)講解)北京傳智播客教育 數(shù)據(jù)庫(kù)連接配置hibernate.connection.driver_classJDBC驅(qū)動(dòng)類類名hibernate.connection.urlJDBC連接字符串hibernate.connection.usernameJDBC連接

12、用戶名hibernate.connection.passwordJDBC連接用戶名對(duì)應(yīng)的密碼提示:在進(jìn)行hibernate系統(tǒng)配置時(shí),屬性名前面的hibernate.可以省略不寫北京傳智播客教育 屬性配置格式:屬性值配置范例數(shù)據(jù)庫(kù)連接的配置還可以使用數(shù)據(jù)源的格式進(jìn)行,需要依賴服務(wù)器提供對(duì)應(yīng)的數(shù)據(jù)源設(shè)置(擴(kuò)展資料)數(shù)據(jù)庫(kù)連接配置北京傳智播客教育 數(shù)據(jù)庫(kù)連接池配置(了解)數(shù)據(jù)庫(kù)連接池中連接的數(shù)量可以通過配置進(jìn)行修改hibernate.connection.pool_size數(shù)據(jù)庫(kù)連接池最大連接數(shù)量數(shù)據(jù)庫(kù)連接配置中還可以進(jìn)行連接池的配置Hibernate默認(rèn)使用自帶的連接池技術(shù),還可以通過配置的形式

13、使用外部連接池完成自定義的連接池設(shè)置北京傳智播客教育 數(shù)據(jù)庫(kù)連接池配置c3p0連接池配置首先需要導(dǎo)入c3p0相關(guān)的jar包Hibernate資源包lib包下的optional包下,查找c3p0相關(guān)jar包然后在配置中添加相關(guān)配置信息只要添加任意一條相關(guān)配置,c3p0連接池將開啟配置完成后可通過hibernate啟動(dòng)日志查看相應(yīng)的配置c3p0配置不能省略前面的hibernate.屬性名北京傳智播客教育 可選配置Hibernate提供有多種針對(duì)系統(tǒng)配置的信息內(nèi)容,可以根據(jù)使用需要,進(jìn)行配置,每種配置信息都存在有一個(gè)默認(rèn)值,如果不進(jìn)行配置,將設(shè)置成默認(rèn)值可選配置的選擇之惑Hibernate作為一種數(shù)

14、據(jù)層框架,目標(biāo)是為了幫助開發(fā)者盡可能的減少操作,如果所有配置都需要用戶自己手工進(jìn)行,莫不如使用JDBC進(jìn)行編程,因此大量的配置開發(fā)中采用默認(rèn)值,需要針對(duì)某種設(shè)置進(jìn)行修改時(shí),才進(jìn)行手動(dòng)修改北京傳智播客教育 可選配置(必選)hibernate. dialect (可選配置中的必選配置)方言:所謂方言是為了區(qū)別各種不同數(shù)據(jù)庫(kù)在生成SQL語(yǔ)句時(shí)使用不同的策略,如分頁(yè)查詢數(shù)據(jù)時(shí),使用的關(guān)鍵字是不相同的,因此要針對(duì)使用的數(shù)據(jù)庫(kù)配置對(duì)應(yīng)的方言北京傳智播客教育 可選配置(常用)hibernate.show_sql設(shè)置是否將執(zhí)行過程中運(yùn)行的SQL語(yǔ)句輸出到控制臺(tái)開發(fā)階段開啟此屬性,上線階段關(guān)閉此屬性hibern

15、ate.format_sql設(shè)置show_sql屬性打印出的SQL語(yǔ)句以分行的格式進(jìn)行顯示北京傳智播客教育 自動(dòng)生成表結(jié)構(gòu)(了解)Hibernate提供通過映射配置文件自動(dòng)生成表結(jié)構(gòu)步驟:首先,需要保障在映射文件中,對(duì)所有的字段進(jìn)行了格式限定,必有屬性為type,其他屬性可根據(jù)需要自主選擇然后,在cfg.xml文件中配置自動(dòng)生成表結(jié)構(gòu)的語(yǔ)句,該配置屬于可選配置北京傳智播客教育 自動(dòng)生成表結(jié)構(gòu)(了解)自動(dòng)生成表結(jié)構(gòu)策略validate:加載hibernate時(shí),驗(yàn)證創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu)create:每次加載hibernate,重新創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu),這就是導(dǎo)致數(shù)據(jù)庫(kù)表數(shù)據(jù)丟失的原因create-drop:加載hibernate時(shí)創(chuàng)建,退出時(shí)刪除表結(jié)構(gòu)update:加載hibernate自動(dòng)更新數(shù)據(jù)庫(kù)結(jié)Hibernate進(jìn)行數(shù)據(jù)庫(kù)表操作時(shí),根據(jù)配置信息自動(dòng)生成對(duì)應(yīng)數(shù)據(jù)庫(kù)表結(jié)構(gòu)。實(shí)際開發(fā)過程中,往往表結(jié)構(gòu)都是提前設(shè)計(jì)的,該配置不具有實(shí)用性。北京傳智播客教育 自動(dòng)提交事務(wù)(了解)Hibernate提供通過映射配置文件實(shí)現(xiàn)事務(wù)自動(dòng)提交在cfg.xml文件中配置自動(dòng)提交事務(wù)注意:自動(dòng)提交事務(wù)設(shè)置開啟后,每次操作將對(duì)應(yīng)一個(gè)獨(dú)立的事務(wù),也就是說同一個(gè)Session過程中,可以存在有多個(gè)事務(wù)事務(wù)的提交與控制應(yīng)該由業(yè)務(wù)決定,而不能每個(gè)獨(dú)立的增刪改

溫馨提示

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

評(píng)論

0/150

提交評(píng)論