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


一、實體類的編寫規則

  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>標簽,則默認為

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM