1. 程式人生 > >Hibernate實體類編寫規則和主鍵策略

Hibernate實體類編寫規則和主鍵策略

有時 由於 rem 數據 數據類型 空間 存在 配置 hyper

一、實體類的編寫規則

  1、屬性要是私有的。

    技術分享

  2、要有公開的setter和getter方法供外界訪問和修改。

    技術分享

  3、每一個實體類要有一個屬性作為唯一值(一般都是使用對於數據表的主鍵)。

    技術分享

  4、建議數據類型不要使用基本的數據類型,而是使用相應的包裝類。

    技術分享

  5、Java中對應的包裝類

基本數據類型 對應包裝類
int Integer
char Character
boolean Boolean
float Float
double Double
short Short
long Long
byte Byte

    使用包裝類的原因:因為有時候使用基本數據類型無法準確表示一些場景。

             例:score代表學生的成績,但是在考試時可能存在缺考的情況,如果使用int數據類型,則score = 0表示考了分,但是缺考還是score =

               0,這樣無法區分;如果使用Integer,則要是缺考,score = null;這樣就可以區分是考了0分還是缺考。

二、主鍵生成策略

    1、Hibernate要求在一個實體中必須要有一個屬性作為唯一值,這個唯一值一般都對應表中的主鍵。

    2、主鍵分類

      自然主鍵:把具有業務含義的字段作為主鍵,稱之為自然主鍵。

      代理主鍵:把不具有業務含義的字段作為主鍵,稱之為代理主鍵。

    3、主鍵的常見生成策略有七種

      (1)increment :用於long、short或int類型的,由Hibernate自動由遞增的方式生成唯一標識符,每次增長1.

               只有當沒有其他線程向同一張表中插入數據時使用。不能在集群情況下使用,適用於代理主鍵。

      (2)identity:采用底層數據庫提供的本身提供的主鍵生成標識符,前提是數據庫必須支持自增長的數據類型。

              在DB2、mysql、MS SQL SERVER、Sybase和HypersonicSQL數據庫中可以使用該策略,該策略

              要求在數據庫中把主鍵定義為自增長,適用於代理主鍵。

      (3)sequence:Hibernate根據底層數據庫序列生成標識符。條件是數據庫要支持序列,Oracle數據庫可以使用該策略

               適用於代理主鍵。

      (4)hilo:hilo:通過hi/lo 算法實現的主鍵生成機制,需要額外的數據庫表保存主鍵生成歷史狀態。

      (5)native:根據底層數據庫對自動生成表示符的能力來自動選擇identity、sequence和hilo三種生成器中的一種。

             適合跨數據庫平臺開發,適用於代理主鍵。

      (6)uuid:Hibernate采用128位的UUID來生成字符,使用16進制表示,使用該策略時主鍵必須定義為String類型,

            由於其所占的空間較多,使用較少,適用於代理主鍵。

      (7)assigned:由Java程序負責生成標識符,如果在配置文件中不配置<generator></generator>標簽,則默認為

              該策略,適用於自然主鍵。

Hibernate實體類編寫規則和主鍵策略