日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate框架(1)

發布時間:2023/12/3 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate框架(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Hibernate框架簡述
Hibernate的核心組件
在基于MVC設計模式的JAVA WEB應用中,Hibernate可以作為模型層/數據訪問層。它通過配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA對象或PO(Persistent Object,持久化對象)映射到數據庫中的數據庫,然后通過操作PO,對數據表中的數據進行增,刪,改,查等操作。
除配置文件,映射文件和持久化類外,Hibernate的核心組件包括以下幾部分:
a)Configuration類:用來讀取Hibernate配置文件,并生成SessionFactory對象。
b)SessionFactory接口:產生Session實例工廠。
c)Session接口:用來操作PO。它有get(),load(),save(),update()和delete()等方法用來對PO進行加載,保存,更新及刪除等操作。它是Hibernate的核心接口。
d)Query接口:用來對PO進行查詢操。它可以從Session的createQuery()方法生成。
e)Transaction接口:用來管理Hibernate事務,它主要方法有commit()和rollback(),可以從Session的beginTrancation()方法生成。

Persistent Object
持久化對象可以是普通的Javabeans,惟一特殊的是它們與(僅一個)Session相關聯。JavaBeans在Hibernate中存在三種狀態:
1.臨時狀態(transient):當一個JavaBean對象在內存中孤立存在,不與數據庫中的數據有任何關聯關系時,那么這個JavaBeans對象就稱為臨時對象(Transient Object)。
2.持久化狀態(persistent):當一個JavaBean對象與一個Session相關聯時,就變成持久化對象(Persistent Object)
3.脫管狀態(detached):在這個Session被關閉的同時,這個對象也會脫離持久化狀態,就變成脫管狀態(Detached Object),可以被應用程序的任何層自由使用,例如可以做與表示層打交道的數據輿對象(Data Transfer Object)。

Hibernate的運行過程
Hibernate的運行過程如下:
A:應用程序先調用Configration類,該類讀取Hibernate的配置文件及映射文件中的信息,并用這些信息生成一個SessionFactpry對象。
B:然后從SessionFactory對象生成一個Session對象,并用Session對象生成Transaction對象;可通過Session對象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法對PO進行加載,保存,更新,刪除等操作;在查詢的情況下,可通過Session對象生成一個Query對象,然后利用Query對象執行查詢操作;如果沒有異常,Transaction對象將 提交這些操作結果到數據庫中。

Hibernate的運行過程如下圖:
補充:
ORMapping基本對應規則:
1:類跟表相對應
2:類的屬性跟表的字段相對應
3:類的實例與表中具體的一條記錄相對應
4:一個類可以對應多個表,一個表也可以對應對個類
5:DB中的表可以沒有主鍵,但是Object中必須設置主鍵字段
6:DB中表與表之間的關系(如:外鍵)映射成為Object之間的關系
7:Object中屬性的個數和名稱可以和表中定義的字段個數和名稱不一樣
Hibernate中的對象
SessionFactory (org.hibernate.SessionFactory)
針對單個數據庫映射關系經過編譯后的內存鏡像,是線程安全的(不可變)。 它是生成的工廠,本身要用到。
Session (org.hibernate.Session)
表示應用程序與持久儲存層之間交互操作的一個單線程對象,此對象生存期很短,隱藏了連接,也是的工廠。
Transaction (org.hibernate.Transaction)
應用程序用來指定原子操作單元范圍的對象,它是單線程的,生命周期很短。它通過抽象將應用從底層具體的、以及事務隔離開。
ConnectionProvider (org.hibernate.connection.ConnectionProvider)
生成連接的工廠(有連接池的作用)。它通過抽象將應用從底層的或隔離開。僅供開發者擴展/實現用,并不暴露給應用程序使用。
TransactionFactory (org.hibernate.TransactionFactory)
生成對象實例的工廠。僅供開發者擴展/實現用,并不暴露給應用程序使用。

主鍵生產策略:

1、increment:主鍵自動增長、由hibernate來管理

注意:如果數據庫也設置了自動增長,就會發生主鍵沖突問題

2、identity:由底層數據庫來管理生成,不由hibernate管理

也就是說底層數據庫怎么設置的主鍵就怎么來

注意:mysql、sql server可以,oracle不可以

3、sequence:標識符生成器,就是底層數據庫來管理生成,利用底層數據庫提供的序列來生成標識符,不由hibernate管理

注意:mysql不支持序列 oracle支持

4、native:由底層數據庫自己來決定使用什么策略,hibernate不管

注意:mysql自動選擇identity、oracle自動選擇sequence

5、uuid:隨機生成32位不相同的字符串。

主鍵分自然主鍵和代理主鍵

1自然主鍵:也就是在業務中有具體意義的主鍵,

2代理主鍵,就是上面我們說的那5種,沒有任何意義,只是標識主鍵是唯一的。

總結

以上是生活随笔為你收集整理的Hibernate框架(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。