Hibernate第二章關聯映射的總結
1.type值的解釋:如下圖:
1)type的值,不是java語言的一個類型的全稱,而是一個hibernate自定義 的類型的名稱。
2)Type的值,其實是對應hibernate中的一個類型的簡稱,而由 org.hibernate.type包下面的類型來真正完成java類型與數據庫類型的傳 換。
2.單類對單表的映射配置
1)類型的處理:
I.各種:type
II.精度:precision,scale
III.邏輯值的處理:boolean,yes_no
2)主鍵的處理
Native,assigned,uuid
3.數據庫編程最佳實踐
1)數據庫的約束是越少越好
2)主鍵要用“非”業務的主鍵,一般會用uuid
4.單表映射
1)只有一個實體類映射一個表
2)有一個實體類 + 一個或者多個值類型,合在一起映射為一個表
5.多表映射
定義:類有多個映射為多給表
6.數據庫層面,如orm無關
1)2個表之間要建立關系?該如何做?有多少種方法?
答案:
3種關系:
a)主鍵關聯:A表的主鍵對應B表的主鍵,(一對一的關系)
在數據庫如何建立這種關系?
結果:假定A做為主表,在B表裏面的某個字段既是主鍵也是 外鍵。
b)外鍵關系:
c)連接表關聯(中間表關聯):
中間表關聯既可以做一對一,也可以做一對多,也可以做多對多 關聯,但實際項目中,出現中間表關聯的時候,一般就是多對多。
2)多對多關系,在數據庫層面本質上
3)
7.set集合的解說 :
8.實體類型與值類型:
9.Hibarnate對應的sql類型和java類型
10.Hibarnate關聯關系映射表:
11.常用數據庫系統中可使用的標識符生成器:
1)MySQL數據庫:identity、increment、hiho、native
2)SQL Server數據庫:identity、increment、hiho、native
3)Oracle數據庫:sequence、increment、hiho、native
12.hibernate開發的三種方式中的:
1)編寫
2)這裏我們說明如果要自動的創建出對應的數據庫,需要做配置 (hibernate.cfg.xml)
3)<property name=”hbm2ddl.auto”>create<property>
這裏有四個配置的值:create,update,create-drop,validate
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.Session的save()方法用來將一個臨時對象轉變為持久化對象,也就是將一個 新的實體保存到數據庫中。通過save()將持久化對象保存到數據庫需要經過 以下步驟:
1)系統根據指定的ID生成策略,為臨時對象生成一個唯一的OID;
2)將臨時對像加載到緩存中,使之變成持久化對象;
3)提交事務時,清理緩存,利用持久化對象包含的信息生成insert語句,將 持久化對象保存到數據庫。
Hibernate第二章關聯映射的總結