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

来源:http://www.cnblogs.com/chenxie/archive/2016/04/28/5444336.html
-Advertisement-
Play Games

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


     我們知道,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在你的業務邏輯代表著特定含義,這時候就可能出現一些意想不到的後果。     總結:在項目中去使用包裝類型而不是基本數據類型,這樣可以使你編寫代碼更簡單,除非有人給你一個更好的理由去使用基本數據類型或者你的上頭要求一定要使用基本數據類型。      
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Python time模塊提供了一些用於管理時間和日期的C庫函數,由於它綁定到底層C實現,因此一些細節會基於具體的平臺。 一.壁掛鐘時間 1.time() time模塊的核心函數time(),它返回紀元開始的秒數,返回值為浮點數,具體精度依賴於平臺。 >>>import time >>>time.t ...
  • solr,什麼是solr,就是你要吃的東西“餿了”,不能吃了,out of date~ 嘛。。。開個玩笑,發音就是‘搜了’,專門用於搜索的一個開源框架,lunce就不說了,不好用,麻煩 來講講solr吧 目前最新更新的是6.0,4月7-8號更新的,哥不太喜歡用新出來的版本,多多少少會有bug,cen ...
  • 首先,應該查看你機器上的java版本 java -version 我機器上是1.7.0的,然後去官網下載對應版本的tomcat,你可以在官網查看tomcat對應的javase的版本 http://tomcat.apache.org/ 註意,下載的時候選擇mac版本的,這兩個版本都可以 下載完成後,解 ...
  • 開篇感言: 自從學習python自動化開發以來,一直都是從技術的角度來看待一切。以為技術就是王道。但顯然我是一隻井底之蛙。其實技術只不過是實現功能的工具而已,僅此而已。後來學習瞭解CMDB,越來越發現很多時候重點並不在技術如何,而是流程或者設計等等一切更能影響全局的東西。所以,我也慢慢有了一點感悟。 ...
  • Cpython Python的官方版本,使用C語言實現,使用最為廣泛,CPython實現會將源文件(py文件)轉換成位元組碼文件(pyc文件),然後運行在Python虛擬機上。 Jyhton Python的Java實現,Jython會將Python代碼動態編譯成Java位元組碼,然後在JVM上運行。 I ...
  • 公司最近使用的ORM框架是JPA實現產品使用的是hibernate,曾經看過一篇博客上面說的是如果團隊裡面沒有一個精通hibernate的人,那麼最好不要使用它,我現在是深刻的體會到了。但是使用什麼框架不是我能決定的,如果是我的話,我寧願使用mybatis。吐槽完來講講出現的問題,因為我們項目是一個 ...
  • 準備了好久了,中間斷斷續續看了些資料,也寫了幾個小demo練手,今天正式開始。 因為要模擬debug和release環境,手上資源又很缺,必須把一些已經拼好的圖片進行切割,網路上找了半天倒是有幾個切圖工具,但是實在是把我噁心的不行,裝個工具,默默的在後臺給我裝了4、5個各種亂七八糟的東西。 然後工具 ...
  • 關於字元串 問題描述:一般這類程式設計的題目較簡單,通過設計字元串的反轉,尋找子串,以及字元串的拼接、刪除操作等問題。 問題 實現一個演算法來判斷一個字元串中的字元是否唯一(即沒有重覆)? 設計演算法並寫出代碼移除字元串中重覆的字元(不能使用額外的緩存空間)? 寫一個函數判斷兩個字元串是否是變位詞? 思 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...