Hibernate一對多關聯關係儲存時的探究

來源:互聯網
上載者:User

標籤:存在   單向關聯   提前   設定   http   9.png   一點   情況   影響   

        在以前使用hibernate時,經常對儲存存在關聯關係的對象時,不確定是否能儲存成功。
    因此,特意對一對多關聯性的2個對象進行實踐。

一、pojo類和設定檔的準備        這裡有一點提前說一下,外鍵列在資料庫中並沒有設定為不為null。因此可以出現外鍵為空白的情況。
(1)pojo類            (2)對應檔            (3)測試類別中方法的準備         
二、雙方都維護關聯關係且雙向關聯        注意:這裡的雙向關聯是指雙向都建立關係
    (1)1方和多方都儲存,且建立了雙向關聯的關係。這樣是肯定可以 儲存成功的。
            
(2)1方或多方中,有一方沒有儲存。那麼會 儲存失敗,因為儲存時分類是瞬時態對象,所以失敗。             
(3)在(2)的代碼的基礎上,給product的對應檔中配置一個級聯儲存。這樣在儲存產品時就會級聯儲存分類,這樣分類就不是瞬時態對象了, 儲存成功
                         

三、雙向維護外鍵,但只建立單向關聯關係 (1)產品中沒有分類,由於外鍵可以為null;因此可以 儲存成功。          
(2)產品中沒有分類,分類中有產品。產品和分類都執行儲存, 儲存成功。                         (3)產品中沒有分類,分類中有產品,只儲存分類。這裡肯定儲存失敗,因為分類也會維護外鍵。          當分類維護外鍵時,發現集合裡面的產品是瞬時態對象。所以肯定 儲存失敗了。        四、外鍵只靠多方維護    先把一方維護外鍵的功能取消,只需要在分類的對應檔中,配置inverse為true
      (1)產品中有分類,只儲存產品。這樣由於儲存產品時,會去維護外鍵,而用來維護外鍵的分類對象為瞬時態對象,所以一定 儲存失敗。        (2)針對(1)我們在儲存產品後面添加儲存分類。這樣儲存產品時,用於維護外鍵用的對象就是持久態對象了。這樣就 儲存成功了。       (3)產品中有分類,分類中有產品,只儲存分類。 儲存成功。因為分類不會維護外鍵,所以不管集合裡面裝什麼狀態的對象都不影響。
       (4)產品中有分類,只儲存分類。一定 儲存成功,因為分類不維護外鍵,且用於維護外鍵的對象也沒有。道理同(3)。      
五、總結       看了這麼多執行個體,發現儲存失敗的原因都是一樣的。就是拿來去更新外鍵的對象(這個描述可能有點繞口)不能是瞬時態。       比如,產品這一方維護外鍵的話,那麼他的用來更新外鍵的對象就是他裡面的那個分類。如果這個分類是瞬時態對象,肯定儲存失敗。  
 
 
 
    

  
 
 

Hibernate一對多關聯關係儲存時的探究

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.