hibernate高級映射

hibernate5個核心接口
Configration:負責讀取主配置文件和映射描述文件
SessionFactory:創建session對象
Session:負責add、delete、save、查詢等操作。
Query:負責執行HQL查詢語句
Transaction:負責事務控制
=============================================================
hibernate對象的三種狀態:
1臨時狀態:剛new出來的對象和session.delete()方法後
2持久狀態:調用session的load/get/save/update方法後,該對象受session管理
3脫管狀態:session.colose()/session.clear()方法後
===============================================================================


高級映射部份:

----------聯合主鍵映射/組件映射-------------

---------------一對一----------------
1.首先判斷數據表的設計類型 是主鍵<-->主鍵
     主鍵<-->外鍵
  主鍵<-->主鍵    雙方都使用<one-to-one>
  主鍵<-->外鍵  主鍵表-->外鍵表 使用<one-to-one>
 外鍵表-->主鍵表 使用<many-to-one>
2.在判斷關係是單向還是雙向
3.如果是單向,再判斷是A-->B還是B-->A




----------------一對多/多對一----------------
1.兩個表設計時採用主外鍵關係
2.在主鍵表建立一對多關係(主鍵表--->外鍵表)
    a.持久類中添加Set集合屬性
    b.在映射描述文件中採用<set><one-to-many/></set>
3.在外鍵表建立多對一關係(外鍵表--->主鍵表)
    a.在持久類中添加對方類型的屬性
    b.在映射文件中使用<many-to-one/>
    c.注意:在映射描述文件中刪除order_id及其定義


------------------多對多-------------------------
多對多在數據庫中需要對應三張表.
d_category--->d_category_product<---d_product
    a.在持久類中添加集合類型的屬性,用於多對多關聯
    b.在映射描述文件中使用如下格式
      <set name="集合屬性名" table="關係表">
<key column="與當前類型對應的關係表字段"></key>
<many-to-many class="集合的元素類型" column="與集合元素類型對應的關係表字段">
      </set>


-------------------繼承關係映射-----------------
1.<joined-subclass>實現繼承,如d_book和d_product。
數據表在設計時父類有一張表,每個子類各有一張表
d_product表,d_book表,d_car表
條件1:A和B之間滿足1:1
條件2:A和B之間符合繼承思想


2.<subclass>實現繼承(瞭解)
數據表設計時,,每個子類都存儲在一張表中
d_product表
d_product表共通字段,d_book字段,d_car字段,......


3.<union-subclass>實現繼承(瞭解)
數據表設計時,每個子類都有各自的表,
d_book表
   d_product字段,d_book字段
d_car表
   d_product字段,d_car字段
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章