什么是Hibernate?
?????? 開源的,輕量級的,內(nèi)部實(shí)現(xiàn)了ORM思想的,封裝了JDBC的持久層框架.那么什么是開源的,它指的是開放源代碼;輕量級的,是因?yàn)樗牡馁Y源(內(nèi)存)少,依賴的jar包少;內(nèi)部實(shí)現(xiàn)了ORM思想指的是它不再關(guān)注sql語句的編寫,只需操作實(shí)體類的屬性和方法;封裝了JDBC因此對比JDBC的效率會有所降低,但是Hibernate提供了一系列的優(yōu)化手段保證查詢效率.
第一部分 Hibernate的入門
這一部分用一句話概括:一個思想,兩個映射,三個準(zhǔn)備,七個步驟.
一個思想:
?????? 指的是ORM思想,是Object Relation Mapping的縮寫(對象關(guān)系映射).
?????? ORM思想在Hibernate中有三個步驟:
?????????????? (1)將實(shí)體類和數(shù)據(jù)庫表映射起來;
?????????????? (2)將類中的屬性和表中的字段映射起來;
?????????????? (3)使用配置文件將這些關(guān)系描述出來.
兩個映射:
?????? 指的是描述實(shí)體類和數(shù)據(jù)庫表的映射關(guān)系的xml文件,是搭建Hibernate運(yùn)行環(huán)境的一個步驟,就要涉及馬上要講的三個準(zhǔn)備.
三個準(zhǔn)備: ? ?
???????? 搭建Hibernate運(yùn)行環(huán)境需要三個準(zhǔn)備工作:
???????????????? 第一步,創(chuàng)建工程,導(dǎo)入jar包(可到http://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/?中下載);
???????????????? 第二步,根據(jù)表編寫它的實(shí)體類和實(shí)體類映射文件,這里要注意的是映射文件的位置以及命名(位置:實(shí)體類所在的包下,命名:實(shí)體類名.hbm.xml);
xml文件的編寫首先要導(dǎo)入DTD約束,如圖1

?然后將實(shí)體類和數(shù)據(jù)庫表映射起來,使用的是class標(biāo)簽,如圖2

? 然后就是將類中的屬性和表中的字段映射起來,這一涉及到配置主鍵和配置普通屬性,配置主鍵使用id標(biāo)簽,配置普通屬性使用property標(biāo)簽,如圖3

第三步,編寫核心配置文件,這里需要配置數(shù)據(jù)庫信息、Hibernate的配置信息以及映射文件的位置(位置:src下;命名:hibernate.cfg.xml).
核心配置文件首先也要導(dǎo)入DTD約束,但和映射文件的約束不同,如圖4

然后就是就是編寫數(shù)據(jù)庫配置信息和hibernate配置信息,如圖5

在做完以上工作后就可以對數(shù)據(jù)庫進(jìn)行增刪改查了!
七個步驟:
??????? (1)加載配置文件:
???????????????? Configuration cfg = new Configuration();
???????????????? cfg.configure();
??????? (2)構(gòu)建一個SessionFactory對象
? ? ? ? ? ? ? ? ? SessionFactory? factory? =? cfg.buildSessionFactory();
??????? (3)打開一個新的session對象
? ? ? ? ? ? ? ? ? Session session = sessionFactory.openSession();
??????? (4)開啟事務(wù),返回事務(wù)對象
? ? ? ? ? ? ? ? ? Transaction tx = session.beginTransaction();
??????? (5)增刪改查:使用session的save、delete、get/load方法進(jìn)行CRUD(增刪改查)操作
??????? (6)提交事務(wù)
? ? ? ? ? ? ? ?? tx.commit();
??????? (7)釋放資源
? ? ? ? ? ? ? ?? session.close();
?????????????? ? sessionFactory.close();
這時我們可進(jìn)一步抽取一個工具類HibernateUtils,如圖6

------------未完待續(xù)---------