1.通過Configuration config = new Configuration().configure();
//讀取并解析hibernate.cfg.xml配置文件
2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>
讀取并解析映射信息
3.通過SessionFactory sf = config.buildSessionFactory();
//創(chuàng)建SessionFactory
4.Session session = sf.openSession();
//打開Sesssion
5.Transaction tx = session.beginTransaction();
//創(chuàng)建并啟動(dòng)事務(wù)Transation
6.persistent operate操作數(shù)據(jù),持久化操作
7.tx.commit();//提交事務(wù)
8.關(guān)閉Session
9.關(guān)閉SesstionFactory
Configuration 類負(fù)責(zé)管理 Hibernate 的配置信息龄寞。
? Hibernate運(yùn)行的底層信息:數(shù)據(jù)庫的URL胞此、用戶名侣颂、密碼婚苹、JDBC驅(qū)動(dòng)類中符,數(shù)據(jù)庫 Dialect,
數(shù)據(jù)庫連接池等(對(duì)應(yīng) hibernate.cfg.xml 文件)配阵。
?持久化類與數(shù)據(jù)表的映射關(guān)系(*.hbm.xml 文件)
創(chuàng)建 Configuration 的兩種方式
? 屬性文件(hibernate.properties):
Configuration cfg = new Configuration();
? Xml文件(hibernate.cfg.xml)
Configuration cfg = new Configuration().configure();
第二種創(chuàng)建方式較為常見冗澈。Hibernate.cfg.xml文件默認(rèn)的目錄為系統(tǒng)的根目錄钦勘。
Configuration對(duì)象根據(jù)當(dāng)前的配置信息生成 SessionFactory 對(duì)象。
SessionFactory 對(duì)象一旦構(gòu)造完畢亚亲,即被賦予特定的配置信息(SessionFactory 對(duì)象中保存了
當(dāng)前的數(shù)據(jù)庫配置信息和所有映射關(guān)系以及預(yù)定義的SQL語句个盆。同時(shí)脖岛,
SessionFactory還負(fù)責(zé)維護(hù)Hibernate的二級(jí)緩存)。
Configuration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
l 是線程安全的颊亮。
l SessionFactory是生成Session的工廠:
Session session = sf.openSession();
l 構(gòu)造SessionFactory很消耗資源,一般情況下一個(gè)應(yīng)用中只初始化一個(gè)SessionFactory對(duì)象柴梆。
l 在Hibernate中,Transaction tx = session.beginTransaction()相當(dāng)于給數(shù)據(jù)庫操作起
事務(wù)终惑。Session.commit()則為提交事務(wù)绍在。
Hibernate的整個(gè)運(yùn)行過程如下:
1、應(yīng)用程序先調(diào)用Configuration類,該類讀取Hibernate配置文件及映射文件中的信息雹有,
2偿渡、并用這些信息生成一個(gè)SessionFactory對(duì)象,
3霸奕、然后從SessionFactory對(duì)象生成一個(gè)Session對(duì)象溜宽,
4、并用Session對(duì)象生成Transaction對(duì)象质帅;
A适揉、可通過Session對(duì)象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法
對(duì)PO進(jìn)行加載、保存煤惩、更新嫉嘀、刪除、等操作魄揉;
B剪侮、在查詢的情況下,可通過Session對(duì)象生成一個(gè)Query對(duì)象洛退,然后利用Query對(duì)象執(zhí)行查詢操作瓣俯;
如果沒有異常,Transaction對(duì)象將提交這些操作到數(shù)據(jù)庫中兵怯。