標籤:png src 臨時對象 緩衝 domain 利用 自己 清理 關聯映射
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,guid做主鍵
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)編寫domain object + 對應檔 -->建立出對應的資料庫
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第二章關聯映射的總結