這篇文章主要介紹“Hibernate常見問題有哪些”,在日常操作中,相信很多人在Hibernate常見問題有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Hibernate常見問題有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
----------------hibernate概念開始----------------
Hibernate簡單講就是ORM,對象關系映射的一種技術,直接將POJO對象跟DB間的關系進行配置,描述。
POJO狀態說明:
在利用hibernate API 操作數據庫時,POJO的三種狀態:
瞬時狀態:當POJO.new()時的狀態
持久化狀態:在利用hibernate session對象進行CRUD的時候處于的狀態
游離狀態:session關閉后
POJO中【主鍵】屬性應該盡可能的定義為包裝類型,雖然很多人認為基本類型數據不需要進行對象的封箱和解箱操作,但是在hibernate中,主鍵是被轉化成對象進行操作的。假設在設計POJO的時候我們將主鍵設置為基本數據類型,那么hibernate在接受后,需要轉換,當用戶要換取時,又要進行數據轉換,這樣可能會導致效率更低。所以建議大家使用包裝類數據。
這里需要注意unsaved-value是個很重要的屬性。Hibernate通過這個屬性來判斷一個對象應該save還是update,如果這個對象的id是unsaved-value的話,那說明這個對象不是 persistence object會進行save(insert)操作;如果id是非unsaved-value的話,那說明這個對象是persistence object(數據庫中已存在),只要update就行了。
----------------hibernate概念結束----------------
以下是對Hibernate常見問題進行的總結:
------
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
------
引發這種問題的關鍵是:unsaved-value的值與JOPO中的id值不匹配。
例如:在POJO.hbm.xml中< id name="id" column="id" type="long" unsaved-value="null">
POJO中的id屬性類型為long類型(基本數據類型,無數據時,值為0)。
測試:現在new()一個POJO,默認id值肯定為0,在hibernate-mapping中找到這個POJO節點后,發現它的id的unsaved-value為null,此時無法匹配,后續判斷的操作也就無從下手,于是出現上述錯誤。
到此,關于“Hibernate常見問題有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。