




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、S2SH輕量級(jí)框架技術(shù) -S2SH應(yīng)用基礎(chǔ),Hibernate映射類型,Hibernate映射類型 是Java和SQL類型的橋梁,用于生成適合的DML或DDL語(yǔ)句 兩種映射類型 內(nèi)置映射類型 自定義映射類型(略),基礎(chǔ)類型的映射關(guān)系,日期類型的映射關(guān)系,大對(duì)象類型的映射關(guān)系,使用Hibernate映射類型,沒(méi)有指定Hibernate映射類型時(shí),Hibernate使用反射機(jī)制判別Java屬性的類別,然后采用相應(yīng)的Hibernate類型 我們建議顯示指定映射類型,特別是對(duì)于int、long等基本數(shù)據(jù)類型,建議使用對(duì)應(yīng)的包裝類。這樣生成的POJO類的屬性默認(rèn)值為null,避免基本數(shù)據(jù)類型的0等默認(rèn)值
2、。 以下情況必須顯式指定Hibernate的映射類型 希望通過(guò)Hibernate工具,由映射文件生成Java持久化類或數(shù)據(jù)庫(kù)Schema時(shí) 一個(gè)Java類型對(duì)應(yīng)多個(gè)Hibernate映射類型,數(shù)據(jù)庫(kù)表的主鍵,數(shù)據(jù)庫(kù)表的主鍵 代理主鍵(不具備業(yè)務(wù)含義的字段)與自然主鍵 主鍵的值最好不會(huì)改變 數(shù)據(jù)庫(kù)中一般使用代理主鍵 主鍵的生成方式 程序生成 數(shù)據(jù)庫(kù)系統(tǒng)生成 自動(dòng)增長(zhǎng):MySQL、MS SQL Server 序列:Oracle,Hibernate的標(biāo)識(shí)符生成器,持久化標(biāo)識(shí)符用于唯一地標(biāo)識(shí)一個(gè)持久化對(duì)象,數(shù)據(jù)庫(kù)主鍵唯一地標(biāo)識(shí)表中的一條記錄;兩者的對(duì)應(yīng)關(guān)系是O-R映射基礎(chǔ) Hibernate使用標(biāo)識(shí)符
3、生成器支持不同的主鍵生成方式,Hibernate內(nèi)置的標(biāo)識(shí)符生成器,assigned 讓應(yīng)用程序在save()之前為對(duì)象分配一個(gè)標(biāo)識(shí)符。這是 元素沒(méi)有指定時(shí)的默認(rèn)生成策略。 increment 用于為long, short或者int類型生成 唯一標(biāo)識(shí)。只有在沒(méi)有其他進(jìn)程往同一張表中插入數(shù)據(jù)時(shí)才能使用。 在集群下不要使用。 identity native 對(duì)DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的內(nèi)置標(biāo)識(shí)字段提供支持。 返回的標(biāo)識(shí)符是long, short 或者int類型的。 sequence 在DB2,PostgreSQL, Oracle,
4、 SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的標(biāo)識(shí)符是long, short或者 int類型的。,配置標(biāo)識(shí)符生成器的示例,identity示例 sequence示例, , person_id_sequence ,為什么需要組件映射,域模型與關(guān)系數(shù)據(jù)模型比較 建立域模型的原則是提高代碼的可重用性 建立關(guān)系數(shù)據(jù)模型的原則是在不會(huì)導(dǎo)致數(shù)據(jù)冗余的前提下,盡可能的減少數(shù)據(jù)庫(kù)表的數(shù)目及表之間的外鍵參照關(guān)系 問(wèn)題 持久化類的數(shù)目往往比數(shù)據(jù)庫(kù)表的數(shù)目多,而且持久化類的屬性并不與表的字段一一對(duì)應(yīng),組件映射的實(shí)現(xiàn),配置映射文件, ,實(shí)
5、體類型與值類型,實(shí)體(Entity)類型 由class、subclass元素聲明 有獨(dú)立的標(biāo)識(shí)符(OID),可以被單獨(dú)持久化 值(Value)類型 沒(méi)有OID 不能進(jìn)行save、get、delete等操作,生命周期依賴于所屬的持久化類的對(duì)象的生命周期,集合映射,集合映射(值類型集合) Set 集合內(nèi)的對(duì)象不排序,沒(méi)有重復(fù)對(duì)象 List 集合內(nèi)的對(duì)象按照索引位置排序,可以有重復(fù)對(duì)象 Map 集合內(nèi)的每一個(gè)元素包含一對(duì)鍵對(duì)象和值對(duì)象,集合中沒(méi)有重復(fù)的鍵對(duì)象,可以有重復(fù)的值對(duì)象。,映射關(guān)系描述,O-R關(guān)系,映射Set的實(shí)現(xiàn),配置映射文件,參見(jiàn)例子工程:hibernate_03_05_set, ,映射
6、List的實(shí)現(xiàn),配置映射文件, ,映射Map的實(shí)現(xiàn),配置映射文件, ,慣例優(yōu)先(于配置),Convention over Configuration 對(duì)于很多項(xiàng)目來(lái)說(shuō),遵從已有慣例,提供合理的缺省選項(xiàng),可以顯著地減少系統(tǒng)所需配置項(xiàng)目的數(shù)量 配置示例 ,注解映射的基礎(chǔ),Entity,注冊(cè)在類頭上,將一個(gè)類聲明為一個(gè)實(shí)體bean(即一個(gè)持久化POJO類) 。 Table,注冊(cè)在類頭上,注解聲明了該實(shí)體bean映射指定的表(table)。 Id用來(lái)注冊(cè)主屬性,GeneratedValue用來(lái)注冊(cè)主屬性的生成策略,Column用來(lái)注冊(cè)屬性,Version用來(lái)注冊(cè)樂(lè)觀鎖,Transient用來(lái)注冊(cè)不是屬
7、性。,注解映射的基礎(chǔ),以上的Id、GeneratedValue、 Column 、 Version,可以用來(lái)注冊(cè)屬性,既可以寫在Java類的屬性上,也可以注冊(cè)在屬性對(duì)應(yīng)的getter上。 Transient注冊(cè)在多余的屬性或多余的getter上,但是必須與以上的Column等對(duì)應(yīng)。 Column 標(biāo)識(shí)屬性對(duì)應(yīng)的字段,示例:Column(name=“userName),注解映射的基礎(chǔ),(1) name 可選,列名(默認(rèn)值是屬性名) (2) unique 可選,是否在該列上設(shè)置唯一約束(默認(rèn)值false) (3) nullable 可選,是否設(shè)置該列的值可以為空(默認(rèn)值false) (4) ins
8、ertable 可選,該列是否作為生成的insert語(yǔ)句中的一個(gè)列(默認(rèn)值true) (5) updatable 可選,該列是否作為生成的update語(yǔ)句中的一個(gè)列(默認(rèn)值true) (6) columnDefinition 可選: 為這個(gè)特定列覆蓋SQL DDL片段 (這可能導(dǎo)致無(wú)法在不同數(shù)據(jù)庫(kù)間移植) (7) table 可選,定義對(duì)應(yīng)的表(默認(rèn)為主表) (8) length 可選,列長(zhǎng)度(默認(rèn)值255) (8) precision 可選,列十進(jìn)制精度(decimal precision)(默認(rèn)值0) (10) scale 可選,如果列十進(jìn)制數(shù)值范圍(decimal scale)可用,在此
9、設(shè)置(默認(rèn)值0),注解映射的基礎(chǔ),主鍵生成策略的注解例子,注解映射的基礎(chǔ),Transient 標(biāo)識(shí)這個(gè)屬性不用持久化 Embeddable【小對(duì)象的頭上】 標(biāo)識(shí)實(shí)體中可以定義一個(gè)嵌入式組件(embedded component)。組件類必須在類一級(jí)定義Embeddable注解。 Embedded【大對(duì)象的屬性頭上】 引用定義的小對(duì)象。 Embeddable【小對(duì)象的頭上】 標(biāo)識(shí)實(shí)體中可以定義一個(gè)嵌入式組件(embedded component)。組件類必須在類一級(jí)定義Embeddable注解。 注意:如果這個(gè)小對(duì)象作為復(fù)合主鍵,一定要實(shí)現(xiàn)Serializable接口。這并不是注解決定的,而是H
10、ibernate的主鍵都需要實(shí)現(xiàn)Serializable接口。 EmbeddedId 【大對(duì)象的屬性頭上】 引用定義的小對(duì)象作為主鍵。 注意:不需要再使用Id注解。,注解映射,主1【tbl_product】: OneToOne(cascade=CascadeType.ALL) PrimaryKeyJoinColumn privateProductInfoModelinfo; 從1【tbl_product_info】: Id Column GeneratedValue(generator=“copy【引用生成策略】) GenericGenerator(name=“copy【定義生成策略】”,strategy=“foreign【寫死,使用外來(lái)策略】”,parameters=Parameter(name=“property”,value=“product【引用自己的Java屬性】) privateintuuid; OneToOne(mappedBy=“info【引用對(duì)方的Java屬性】) privateProductModelproduct;,注解映射,1【tbl_parent】: OneToMany JoinColumn(nam
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源汽車電控工程師崗位面試問(wèn)題及答案
- 2025屆重慶市主城四區(qū)高一下化學(xué)期末復(fù)習(xí)檢測(cè)試題含解析
- 廣西玉林、柳州市2025年高一下化學(xué)期末聯(lián)考模擬試題含解析
- 廣東省深圳市南山區(qū)南頭中學(xué)2025屆高二下化學(xué)期末預(yù)測(cè)試題含解析
- 江蘇省南京梅山高級(jí)中學(xué)2025年化學(xué)高二下期末檢測(cè)試題含解析
- 2025屆湖北省鄂東南五校一體聯(lián)盟聯(lián)考高二下化學(xué)期末質(zhì)量跟蹤監(jiān)視試題含解析
- 縣區(qū)培訓(xùn)材料管理辦法
- 跨境旅游品牌策略-洞察及研究
- 村級(jí)畜牧獸醫(yī)管理辦法
- 廈門采購(gòu)方式管理辦法
- 外賣配送人員勞動(dòng)合同
- 《義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)(2022年版)》初中內(nèi)容解讀
- 精神疾病患者的麻醉管理
- 高一物理競(jìng)賽試題及答案
- 醫(yī)院預(yù)約平臺(tái)建設(shè)方案
- 生命體征課件教學(xué)課件
- 2024年全國(guó)環(huán)保產(chǎn)業(yè)職業(yè)技能競(jìng)賽(工業(yè)廢水處理工)考試題庫(kù)(含答案)
- 《烏魯木齊市國(guó)土空間總體規(guī)劃(2021-2035年)》
- HJ 651-2013 礦山生態(tài)環(huán)境保護(hù)與恢復(fù)治理技術(shù)規(guī)范(試行)
- SY-T 5333-2023 鉆井工程設(shè)計(jì)規(guī)范
- 冠脈介入進(jìn)修匯報(bào)
評(píng)論
0/150
提交評(píng)論