標籤:執行個體 主鍵建置原則 img 資料庫空間 規則 建立 mil 提交 alt
一、實體類編寫規則
1、實體類裡面的屬性屬於私人的
2、私人屬性使用公開的set和get方法操作
3、要求實體類有屬性作為唯一值(一般使用id值)
4、實體類屬性建議不要使用基礎資料型別 (Elementary Data Type),使用基礎資料型別 (Elementary Data Type)對應的封裝類
二、Hibernate 主鍵建置原則
1、主鍵的分類
自然主鍵:把具有業務含義的欄位作為主鍵,稱之為自然主鍵。例如在user表中,如果把name欄位作為主鍵,其前提條件必須是:每一個客戶的姓名不允許為null,不允許客戶重名,並且不允許修改客戶姓名。儘管這也是可行的,但是不能滿足不斷變化的業務需求,一旦出現了允許客戶重名的業務需求,就必須修改資料模型,重新定義表的主鍵,這給資料庫的維護增加了難度。
代理主鍵:把不具備業務含義的欄位作為主鍵,稱之為代理主鍵。該欄位一般取名為“ ID ” 通常為整數類型,因為整數類型比字串類型要節省更多的資料庫空間。在上面例子中,顯然更合理的方式是使用代理主鍵。
2、hibernate的主鍵生產策略:使用 generator 標籤
classs屬性值主要有2個(native,uuid):
注意:使用uuid生產策略時,實體類id屬性必須使用 字串類型
三、實體類對象的三種狀態
1、瞬時態(transient)
瞬時態也稱為臨時態或者自由態,瞬時態的執行個體是由new命令建立、開闢記憶體空間的對象,不存在持久化標識OID(相當於主索引值),尚未與Hibernate sesslon關聯,在資料庫中也沒有記錄,失去引用後將被JVM回收。瞬時狀態的對象在記憶體中是孤立存在的,與資料庫中的資料無任何關聯,僅是一個資訊攜帶的載體。
瞬時態:對象裡面沒有id值,對象與session沒有關聯
2、持久態(persistent)
持久態的對象存在持久化標識OID,加入到了Session緩衝中,並且相關聯的Session沒有關閉,在資料庫中有對應的記錄,每條記錄只對應唯一的持久化對象,需要注意的是,持久態對象是在事務還未提交前變成持久態的。
持久態:對象裡面有id值,對象與session關聯
3、脫管態(detached)
脫管態也稱離線態或者游離態,當某個持久化狀態的執行個體與Session的關聯被關閉時就變成了脫管態。脫管態對象存在持久化標識OID,並且仍然與資料庫中的資料存在關聯,只是失去了與當前 Session的關聯,脫管狀態物件發生改變時Hibernate不能檢測到
託管態:對象有id值,對象與session沒有關聯
Hibernate(2)