Hibernate学习笔记--核心编程
參考資料:Java Web核心框架
http://blog.csdn.net/lsh6688/article/details/7611950
?補(bǔ)充:ThreadLocal的使用:http://www.cnblogs.com/gnivor/p/4440776.html
Part 1.hibernate核心接口層次架構(gòu)關(guān)系
圖:hibernate核心接口層次架構(gòu)關(guān)系
上圖中,Hibernate的接口大致可以分為以下幾種類型:
1. 基本操作類:一些被用戶的應(yīng)用程序調(diào)用的,用來(lái)完成基本的創(chuàng)建、讀取、更新、刪除操作以及查詢操作的接口。這些接口是Hibernate實(shí)現(xiàn)用戶程序的商業(yè)邏輯的主要接口,它們包括Session、Transaction和Query。
2. 配置類:Hibernate用來(lái)讀取諸如映射表這類配置文件的接口,典型的代表有Configuration類。
3. 回調(diào)(Callback)接口:它允許應(yīng)用程序能對(duì)一些事件的發(fā)生作出相應(yīng)的操作,例如Interceptor、Lifecycle和Validatable都是這一類接口。?
4. 一些可以用來(lái)擴(kuò)展Hibernate的映射機(jī)制的接口:例如UserType、CompositeUserType和IdentifierGenerator。這些接口可由用戶程序來(lái)實(shí)現(xiàn)(如果有必要)。
Hibernate使用了J2EE架構(gòu)中的如下技術(shù):JDBC、JTA、JNDI。其中JDBC是一個(gè)支持關(guān)系數(shù)據(jù)庫(kù)操作的一個(gè)基礎(chǔ)層;它與JNDI和JTA一起結(jié)合,使得Hibernate可以方便地集成到J2EE應(yīng)用服務(wù)器中去。
?
Part 2.常用核心接口及相互關(guān)系
常用核心接口有6個(gè):Session、SessionFactory、Configuration、Transaction、Query、Criteria
圖:接口類的產(chǎn)生關(guān)系
?
Session接口:
Session接口 Session 接口對(duì)于Hibernate 開(kāi)發(fā)人員來(lái)說(shuō)是一個(gè)最重要的接口。然而在Hibernate中,實(shí)例化的Session是一個(gè)輕量級(jí)的類,創(chuàng)建和銷(xiāo)毀它都不會(huì)占用很多資源。這在實(shí)際項(xiàng)目中確實(shí)很重要,因?yàn)樵诳蛻舫绦蛑?#xff0c;可能會(huì)不斷地創(chuàng)建以及銷(xiāo)毀Session對(duì)象,如果Session 的開(kāi)銷(xiāo)太大,會(huì)給系統(tǒng)帶來(lái)不良影響。但是Session對(duì)象是非線程安全的,因此在你的設(shè)計(jì)中,最好是一個(gè)線程只創(chuàng)建一個(gè)Session對(duì)象。 session可以看作介于數(shù)據(jù)連接與事務(wù)管理一種中間接口。我們可以將session想象成一個(gè)持久對(duì)象的緩沖區(qū),Hibernate能檢測(cè)到這些持久對(duì)象的改變,并及時(shí)刷新數(shù)據(jù)庫(kù)。我們有時(shí)也稱Session是一個(gè)持久層管理器,因?yàn)樗@一些持久層相關(guān)的操作, 諸如存儲(chǔ)持久對(duì)象至數(shù)據(jù)庫(kù),以及從數(shù)據(jù)庫(kù)從獲得它們。需要注意的是,Hibernate的session不同于JSP 應(yīng)用中的HttpSession。當(dāng)我們使用session這個(gè)術(shù)語(yǔ)時(shí),我們指的Hibernate 中的session,而我們以后會(huì)將HttpSesion 對(duì)象稱為用戶session。
?
SessionFactory接口:
SessionFactroy接口負(fù)責(zé)初始化Hibernate。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對(duì)象。這里用到了工廠模式。需要注意的是SessionFactory并不是輕量級(jí)的,因?yàn)橐话闱闆r下,一個(gè)項(xiàng)目通常只需要一個(gè)SessionFactory就夠,當(dāng)需要操作多個(gè)數(shù)據(jù)庫(kù)時(shí),可以為每個(gè)數(shù)據(jù)庫(kù)指定一個(gè)SessionFactory。
?
Transaction接口:
Transaction接口負(fù)責(zé)事務(wù)相關(guān)的操作,一般在Hibernate的增刪改中出現(xiàn),但是使用Hibernate的人一般使用Spring去管理事務(wù)。
?
Query和Criteria接口:
Query和Criteria接口負(fù)責(zé)執(zhí)行各種數(shù)據(jù)庫(kù)查詢。它可以使用HQL語(yǔ)言或SQL語(yǔ)句兩種表達(dá)方式。它的返回值一般是List。需要自己轉(zhuǎn)換。
?
Configuration接口:
Configuration對(duì)象用于配置并啟動(dòng)Hibernate。Hibernate應(yīng)用通過(guò)Configuration實(shí)例來(lái)指定對(duì)象—關(guān)系映射文件的位置或者動(dòng)態(tài)配置Hibernate的屬性,然后創(chuàng)建SessionFactory實(shí)例。在Hibernate啟動(dòng)過(guò)程中,Configuration類的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建SessionFactory實(shí)例。我們可以查看Configuration的源代碼,它的configure()方法是這樣實(shí)現(xiàn)的:
public Configuration configure() throwsHibernateException {configure("/hibernate.cfg.xml" );//此處指定了ORM文件的位置return this; }?
轉(zhuǎn)載于:https://www.cnblogs.com/gnivor/p/4440184.html
總結(jié)
以上是生活随笔為你收集整理的Hibernate学习笔记--核心编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: EMCA和EMCTL的简单用法
- 下一篇: sysbench 一些选项参数记录