天天看點

【hibernate學習】Hibernate持久化類

1、持久化類的概念:

什麼是持久化,将記憶體中的Java對象永久的存儲到資料庫中的這個過程稱為持久化。

2、什麼是持久化類:一個Java對象與我們的資料庫中的表建立了映射聯系,這個類我們就稱之為持久化類。

3、持久化類的編寫規則:

(1)對持久化類提供一個無參數構造(hiberante底層需要使用反射生成執行個體)

(2)對私有屬性提供getter和setter方法(hibernate中設定或者擷取對象屬性的值)

(3)對持久化類提供一個唯一辨別OID與資料庫主鍵對應(Java中通過對象的記憶體位址來區分是否是同一個對象,資料庫中通過主鍵來确定是否是同一條記錄,而Hibernate通過對象屬性OID來确定是否是同一個對象)

(4)持久化類的屬性要盡量使用包裝類型(基本資料類型預設值有歧義,對象類型預設值是null。0代表有值為0,而null代表沒有值)

(5)持久化類不要使用final進行修飾(延遲加載本身是Hibernate的一個優化的手段,傳回的是一個代理對象,javassit可以對沒有實作接口的類産生代理,實際上使用了非常底層的位元組碼增強技術,來繼承這個類來産生代理對象)

final修飾延遲加載失效。get與load将沒有差別。

持久化類的三種狀态:

瞬時态:這種對象沒為唯一的OID,沒有被Session所管理,稱之為瞬時态。

持久态:這種對象有唯一的OID,被Session所管理,稱之為持久态。

持久化類的持久化對象可以自動更新資料庫,底層原理依賴一級緩存。注意:(Hibernate緩存區中的資料會在hibernate的快照區儲存一個副本,當緩存中的資料被修改,在session送出的時候,會和快照區做一個對比,如果相同不做修改,如果不同就修改)

脫管态:這種對象有唯一的OID,沒有被Session所管理,稱之為脫管态。