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字段
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字段