1瞭恰、Hibernate接口
訪問數(shù)據(jù)庫操作的接口:Session弛随、Transaction瓢喉、Query
配置Hibernate的接口:Configuration
【五大核心接口】【考】
Configuration接口:配置Hibernate,啟動(dòng)Hibernate舀透,創(chuàng)建sessionFactory對象
Session接口:持久化操作的基礎(chǔ)栓票,相當(dāng)于JDBC的connection(自動(dòng)提交事務(wù)),提供了一系列的持久化操作方法save(),update(),delete(),load(),find()【考選擇題愕够,沒有誰走贪?】
還持有一級緩存。(獲得了session相當(dāng)于獲得了數(shù)據(jù)庫連接惑芭,執(zhí)行session方法時(shí)候必須要放在事務(wù)中坠狡,非自動(dòng)提交事務(wù))
即:不開啟事務(wù)就不能將對象保存在數(shù)據(jù)庫中!遂跟!
如何獲得session對象逃沿?
1)openSession:手動(dòng)關(guān)閉,每次創(chuàng)建心得session對象
2)getCurrentSession:自動(dòng)關(guān)閉幻锁,使用現(xiàn)有的session對象
SessionFactory接口:保存了當(dāng)前數(shù)據(jù)庫配置的所有映射關(guān)系感挥,保存在內(nèi)存中。還是生成Session的工廠越败,一個(gè)SessionFactory對應(yīng)一個(gè)數(shù)據(jù)庫連接(可創(chuàng)建多個(gè)session触幼,每創(chuàng)建一個(gè)session記得要關(guān)閉session啊,如果不關(guān)閉究飞,那么hashcode就不一樣)
Transaction接口:實(shí)現(xiàn)數(shù)據(jù)庫中的事務(wù)的控制置谦,是由Session對象產(chǎn)生的,所以他的生命周期比Session短亿傅,Ssession的生命周琪中可以有多個(gè)Transaction對象
Query接口和Criteria接口:執(zhí)行數(shù)據(jù)庫的查詢
else:
大類型向小類型轉(zhuǎn)換即強(qiáng)轉(zhuǎn)類型轉(zhuǎn)換-簡稱強(qiáng)轉(zhuǎn)或顯式類型轉(zhuǎn)換
2媒峡、單表的CRUD操作實(shí)例:
save()
update()
Student s = (Student)session.get(String.class,100)//,反射機(jī)制葵擎,主鍵100
s.setGender("女")谅阿;
session.update(s);
delete()
Student s = (Student)session.get(String.class,100)//,反射機(jī)制酬滤,主鍵100
session.update(s);
或者
tx=sesion.beginTransaction();
session.delete("from Customer as c");
tx.commit()
;get/load()
Student s =(Student) session.get(String.class,100)//签餐,反射機(jī)制,主鍵100,立刻發(fā)送sql語句
Student s = (Student)session.load(String.class,100)//盯串,反射機(jī)制氯檐,主鍵100,等要使用這個(gè)對象的時(shí)候才發(fā)送sql語句体捏,返回代理對象
system.out.println(s);
3冠摄、Hibernate對象的生命周期【考】
(1)瞬態(tài):表示該實(shí)體對象與數(shù)據(jù)庫中的數(shù)據(jù)無任何關(guān)聯(lián)糯崎,也從未與任何持久化上下文聯(lián)系過,也沒有持久化標(biāo)識(shí)(主鍵)
(2)持久態(tài):一個(gè)實(shí)體對象與一個(gè)Session對象的實(shí)例相關(guān)的河泳。也與數(shù)據(jù)庫數(shù)據(jù)相關(guān)聯(lián)沃呢。Hibernate會(huì)根據(jù)持久態(tài)對象的屬性的變化而改變數(shù)據(jù)庫中的相應(yīng)記錄
(3)游離態(tài):由持久態(tài)對象轉(zhuǎn)換而來,不再與Session關(guān)聯(lián)拆挥,與數(shù)據(jù)庫的中數(shù)據(jù)沒有直接聯(lián)系