hibernate實體類屬性應該使用int還是Integer


     我們知道,hibernate並沒有強制要求pojo(實體類 )屬性必須是基本數據類型或者是包裝類,但是我們把屬性聲明為基本數據類型( primitive types directly)或者包裝類 ( wrapping classes for primitives)對我們代碼的編寫有着深遠的影響。
 

1,使用基本數據類型的好處

a),使用基本數據類型意味着你所定義的屬性不允許為空,這樣你在獲取該屬性的時候就不可能會得到一個null值。
b),int在java中占32/64 bits,而Integer占了16個字節,所以使用Integer在性能方面要比int差一些。
 

2,使用包裝類的好處

a),當我們不想給這個屬性設置任何值的時候,我們可以給它一個null值(前提是數據庫的字段允許插入NULL)。
b),我們可以在pojo類中使用驗證注解對屬性的值做校驗(例如: javax.validation.constraints.NotNull)
 

3,hibernate官方推薦的做法

下面引用自hibernate官方文檔
Cat has a property called id. This property maps to the primary key column(s) of a database table. The property might have been called anything, and its type might have been any primitive type, any primitive "wrapper" type, java.lang.String or java.util.Date.
...
We recommend that you declare consistently-named identifier properties on persistent classes and that you use a nullable (i.e., non-primitive) type.
 
可以看出,hibernate是建議開發者使用包裝類的。
 

4,兩者在實際開發中的比較

a),如果你的數據庫字段是允許為空的,使用包裝類。如果不允許為空,使用包裝的時候,如果你往數據庫插入null值,此時就會拋出異常。然后你就可以對異常進行捕獲並處理。
b),使用基本數據類型的時候,如果字段是NULL,那么JDBC會返回0,但是這里會有一個問題。有可能0在你的業務邏輯代表着特定含義,這時候就可能出現一些意想不到的后果。
 
 
總結:在項目中去使用包裝類型而不是基本數據類型,這樣可以使你編寫代碼更簡單,除非有人給你一個更好的理由去使用基本數據類型或者你的上頭要求一定要使用基本數據類型。
 
 
 


免責聲明!

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



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