Hibernate的几个关键类的详解及Hibernate的运行过程
Configuration 類
Configuration 類負(fù)責(zé)管理 Hibernate 的配置信息。包括如下內(nèi)容:
Hibernate運(yùn)行的底層信息:數(shù)據(jù)庫的URL、用戶名、密碼、JDBC驅(qū)動類,數(shù)據(jù)庫Dialect,數(shù)據(jù)庫連接池等(對應(yīng) hibernate.cfg.xml 文件)。
持久化類與數(shù)據(jù)表的映射關(guān)系(*.hbm.xml 文件)
?
創(chuàng)建 Configuration 的兩種方式
1,xml文件(hibernate.cfg.xml) (常用這種方法 )
Configuration cfg = new Configuration();?? cfg.configure() ?;
?
2,屬性文件(hibernate.properties):
??? Configuration cfg = new Configuration();
?
?
SessionFactory接口
構(gòu)造 SessionFactory 很消耗資源,一般情況下一個應(yīng)用中只初始化一個 SessionFactory 對象。
?
?
session接口
Session 是應(yīng)用程序與數(shù)據(jù)庫之間交互操作的一個單線程對象,是 Hibernate 運(yùn)作的中心,所有持久化對象必須在 session 的管理下才可以進(jìn)行持久化操作。此對象的生命周期很短。Session 對象有一個一級緩存,顯式執(zhí)行 flush 之前,所有的持久層操作的數(shù)據(jù)都緩存在 session 對象處。相當(dāng)于 JDBC 中的 Connection。
持久化類與 Session 關(guān)聯(lián)起來后就具有了持久化的能力。
是線程不安全的
Session 類的方法:
取得持久化對象的方法: get() ????load()
持久化對象都得保存,更新和刪除:save(),update(),saveOrUpdate(),delete()
開啟事務(wù): beginTransaction().
管理 Session 的方法:isOpen(),flush(), clear(), evict(), close()等
?
?
Transaction接口
代表一次原子操作,它具有數(shù)據(jù)庫事務(wù)的概念。所有持久層都應(yīng)該在事務(wù)管理下進(jìn)行,即使是只讀操作。(hibernate屬于持久層里的框架)
crud都要在開啟事務(wù)下完成(因?yàn)槭聞?wù)會涉及到刷新一級緩存)
? Transaction tx ?=? session.beginTransaction();
常用方法:
commit():提交相關(guān)聯(lián)的session實(shí)例
rollback():撤銷事務(wù)操作
wasCommitted():檢查事務(wù)是否提交
?
?
?
Hibernate運(yùn)行過程
1、應(yīng)用程序先調(diào)用Configuration類,該類讀取Hibernate配置文件及映射文件中的信息,
2、并用這些信息生成一個SessionFactory對象,
3、然后從SessionFactory對象生成一個Session對象,
4、并用Session對象生成Transaction對象;
??? A、可通過Session對象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法對PO進(jìn)行加載、保存、更新、刪除、等操作;
B、在查詢的情況下,可通過Session對象生成一個Query對象,然后利用Query對象
執(zhí)行查詢操作;
5,如果沒有異常Transaction對象將提交這些操作到數(shù)據(jù)庫中。即事務(wù)提交
6,最后關(guān)閉session(即關(guān)閉數(shù)據(jù)庫連接池的連接),釋放資源
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/wzhBlog/archive/2013/03/15/2962288.html
總結(jié)
以上是生活随笔為你收集整理的Hibernate的几个关键类的详解及Hibernate的运行过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eclipse python 开发环境配
- 下一篇: 未能加载文件或程序集“Antlr3.Ru