1. 程式人生 > >Hibernate第二章關聯映射的總結

Hibernate第二章關聯映射的總結

reat pda 關聯關系映射 update 出現 eat 技術分享 變化 assign

1.type值的解釋:如下圖:

1)type的值,不是java語言的一個類型的全稱,而是一個hibernate自定義 的類型的名稱。

2)Type的值,其實是對應hibernate中的一個類型的簡稱,而由 org.hibernate.type包下面的類型來真正完成java類型與數據庫類型的傳 換。

技術分享

2.單類對單表的映射配置

1)類型的處理:

I.各種:type

II.精度:precisionscale

III.邏輯值的處理:booleanyes_no

2)主鍵的處理

Nativeassigneduuid

3.數據庫編程最佳實踐

1)數據庫的約束是越少越好

2)主鍵要用“非”業務的主鍵,一般會用uuid

guid做主鍵

4.單表映射

1)只有一個實體類映射一個表

2)有一個實體類 + 一個或者多個值類型,合在一起映射為一個表

5.多表映射

定義:類有多個映射為多給表

6.數據庫層面,如orm無關

12個表之間要建立關系?該如何做?有多少種方法?

答案:

3種關系:

a)主鍵關聯:A表的主鍵對應B表的主鍵,(一對一的關系)

在數據庫如何建立這種關系?

結果:假定A做為主表,在B表裏面的某個字段既是主鍵也是 外鍵。

b)外鍵關系:

c)連接表關聯(中間表關聯):

中間表關聯既可以做一對一,也可以做一對多,也可以做多對多 關聯,但實際項目中,出現中間表關聯的時候,一般就是多對多。

2)多對多關系,在數據庫層面本質上

“不支持”,一般是把多對多關系拆分 為兩個一對多。

3)

7.set集合的解說 :

技術分享

8.實體類型與值類型:

技術分享

9.Hibarnate對應的sql類型和java類型

技術分享

10.Hibarnate關聯關系映射表:

技術分享

11.常用數據庫系統中可使用的標識符生成器:

1)MySQL數據庫:identityincrementhihonative

2)SQL Server數據庫:identityincrementhihonative

3)Oracle數據庫:sequenceincrementhihonative

12.hibernate開發的三種方式中的:

1)編寫

domain object + 映射文件 -->創建出對應的數據庫

2)這裏我們說明如果要自動的創建出對應的數據庫,需要做配置 hibernate.cfg.xml

3<property name=”hbm2ddl.auto”>create<property>

這裏有四個配置的值:createupdatecreate-dropvalidate

I.Create:當我們的應用程序加載hibernate.cfg.xml

[new Configuration().cofig();]就會根據映射文件,創建出數據庫,每次都 會重新創建,原來表中的數據就沒有了。

II.update:如果數據庫中沒有該表 ,則創建,如果有表,則看有沒有變化, 如果有變化,則更新。

III.create-drop:在顯示關閉sessionFactory時,將drop掉數據庫的schema

IIII.validate:相當於每次插入數據之前都會驗證數據庫中的表結構和hbm 文件的結構是否一致。

註意:在開發測試中,我們配置哪個都可以測試,但是如果項目發布後, 最好自己配置一次,讓對應的數據庫生成,完成取消配置。

4)domain對象的細節:

a)需要一個無參的構造函數(用於hibernate反射該對像)

b)應當有一個無業務邏輯的主鍵屬性

c)給每個屬性提供 set get方法

d)domain對象中的屬性,只有配置到了對象映射文件後,才會被 hibernate管理

e)屬性一般時private範圍

13.Sessionsave()方法用來將一個臨時對象轉變為持久化對象,也就是將一個 新的實體保存到數據庫中。通過save()將持久化對象保存到數據庫需要經過 以下步驟:

1)系統根據指定的ID生成策略,為臨時對象生成一個唯一的OID

2)將臨時對像加載到緩存中,使之變成持久化對象;

3)提交事務時,清理緩存,利用持久化對象包含的信息生成insert語句,將 持久化對象保存到數據庫。

Hibernate第二章關聯映射的總結