<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # 簡介 一個對象就對應著表中的一條記錄,而表中的字段對應著類中的屬性。 數據庫中表與表之間存在著三種關系,也就是系統設計中的三種實體關系 ## 一對一 原則有兩種: 1. 1. 唯一外鍵對應:在任意一方添加外鍵來描述對應關系 2. 2. 主鍵對應:一方的主鍵作為另一方的主鍵 ![](https://box.kancloud.cn/4fe81fa7df0d93110215b9bc819354ca_869x483.png) ~~~ Class Employee{ Private Archives archives; } Class Archives{ Private Employee employee; } ~~~ ## 一對多,多對一 客戶與訂單之間一對多關系(多對一) 建表原則:在多的一方添加外鍵來描述關聯關系 ![](https://box.kancloud.cn/45b290a339f5c7e52e2820ec7d0c0597_1072x413.png) ~~~ Class Customer{ Private Set<Order> orders; } Class Order{ Private Customer c; } ~~~ ## 多對多 例如學生與老師 建表原則:通過一張中間表來描述其對應關系 ![](https://box.kancloud.cn/b22bdee598922f0ce3e2713fa37b8a4a_1072x630.png) ~~~ Class Student{ Set<Teacher> ts; } Class Teacher{ Set<Student> ss; } ~~~ # Hibernate關系映射--(一對多,多對一) 類創建 訂單 ![](https://box.kancloud.cn/5443e5b3c24b6083b368ea4c790bce42_781x328.png) 客戶 ![](https://box.kancloud.cn/3dac21bf3adb871e20f224e53eb946fd_992x325.png) 映射文件編寫 Order.hbm.xml ![](https://box.kancloud.cn/573095c6a4616a1de7ecf4fdf7df6385_1114x241.png) Customer.hbm.xml ![](https://box.kancloud.cn/e03d0b62f9a7e9006cc842adb8dca0d9_1068x438.png) ## 測試保存 ![](https://box.kancloud.cn/12e8c5b996c2de3c55fd20a1cc349d4e_426x452.png) 上面操作是一種雙向關聯 問題:我們可不可以只保存訂單或只保存客戶完成保存操作? ## 測試單向關聯保存 ![](https://box.kancloud.cn/6efdec2a3f6ce882f20ffa6f568912a4_1152x422.png) 這個異常代表提一個持久化對象關聯了一個瞬時對象。 我們可以使用級聯操作來解決上述的問題. 我們現在要做的是保存訂單時保存客戶,需要在訂單的hbm配置文件中修改 ![](https://box.kancloud.cn/18a906cdd3d11e64915f7087b0cc6d37_1117x457.png) ## 雙向關聯維護 我們在開發中要配置雙向關聯配置。---------可以通過任意一方來操作對方 在操作代碼,盡量來要進行單向關聯。------可以盡量資源浪費。 在雙向關聯中,會存在多余的update語句。 我們可以使用inverse屬性來設置,雙向關聯時由哪一方來維護表與表之間的關系。 ![](https://box.kancloud.cn/2bd4e6bc63c278a1808b5ade425b848e_1023x405.png) # 級聯刪除 我們在刪除客戶時,也要刪除訂單,如果沒有做級聯,那么這個操作是不允許。 為了維護數據完整性 ![](https://box.kancloud.cn/d5316bc644a655ef43158cee108f5e51_1109x124.png) 想要完成操作:我們可以在客戶中添加`cascade=”delete”;` ![](https://box.kancloud.cn/3d3e49e59278d1a2f9d416ff94a7fb74_1058x649.png) ![](https://box.kancloud.cn/8f1b061555269cb4f0508ca5e83b0bc3_1081x207.png) # cascade總結 使用cascade可以完成級聯操作 它可常用取值: none這是一個默認值 save-update,當我們配置它時,底層使用save update或save-update完成操作,級聯保存臨時對象,如果是游離對象,會執行update. delete 級聯刪除 delete-ophan 刪除與當前對象解除關系的對象。 all 它包含了save-update delete操作 all-delete-orphan 它包信了delete-orphan與all操作 # cascade與inverse有什么區別? cascade它是完成級聯操作 Inverse它只有在雙向關聯情況下有作用,它來指定由哪一方維護外鍵 # 多對多 我們使用注解完成多對多配置. 描述學生與老師. 使用@ManyToMany來配置多對多,只需要在一端配置中間表,另一端使用mappedBy表示放置外鍵維護權。 創建PO類 Teacher類中 ![](https://box.kancloud.cn/0af673d69a71175a264b0e6d4152af0f_774x517.png) ## 級聯保存操作測試 因為我們將外鍵的維護權利由Student來維護,我們演示保存學生時,將都也級聯保存。 ![](https://box.kancloud.cn/1784fac6fb33136c6ff57973000e9efe_788x463.png) # 一對一 以人與身份證號為例 一對一操作有兩種映射方式: 1. 1. 在任意一方添加外鍵 2. 2. 主鍵映射 ## 外鍵映射 創建實體 User類 ![](https://box.kancloud.cn/9b20ea2a4ec598f4c2d6d866d9632c8d_748x287.png) 上述配置,t_user表放棄對外鍵的維護權利 IDCard類 ![](https://box.kancloud.cn/135499cb3af4a00307d94db458d6ceb4_742x875.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看