hello Hibernate

最近學(xué)習(xí)java 學(xué)到了Hibernate想把學(xué)習(xí)的痕跡做個紀錄泣栈,當做是筆記也行
本學(xué)習(xí)過程是圍繞一本書進行的《精通hibernate》 孫衛(wèi)琴版

書的開頭一些概念性東西锡移,暫時不做紀錄潦牛。后面有時間再整(呵呵)
直接從2.4開始

2.4 Hibernate API 簡介

Hibernate API 接口可分為一下幾類

1.提供數(shù)據(jù)庫操作的 增刪改查的接口(Session、Transaction、Query)
2.用戶配置Hibernate的接口:Configuration
3.使應(yīng)用程序攔截Hibernate內(nèi)部發(fā)生的事件
(Interceptor、LoadEventListener 和 SaveEventListener接口等)

  1. 用于擴展Hibernate功能的接口
另外Hibernate并沒有完全封裝jdbc也就是說程序可以繞過hibernate而直接使用jdbc來操作數(shù)據(jù)庫

2.4.1 Hibernate 的核心接口

所有的Hibernate應(yīng)用中都會訪問的 5 個核心接口

  • Configuration 接口:配置Hibernate涡真、根啟動Hibernate、創(chuàng)建SessionFactory對象
  • SessionFactory 接口:初始化Hibernate 充當數(shù)據(jù)存儲源的代理肾筐,創(chuàng)建Session對象
  • Session 接口:負責(zé)保存哆料、更新、刪除吗铐、加載和查詢對象
  • Transaction 接口:事務(wù)管理
  • Query 和 Criteria 接口:執(zhí)行數(shù)據(jù)庫查詢
5.png
  1. Configuration 接口
    Configuration 對象用于配置并且根啟動Hibernate,Hibernate通過Configuration實例來獲取對象-關(guān)系映射文件中的元數(shù)據(jù)以及動態(tài)配置Hibernate的屬性然后創(chuàng)建SessinFactory實例
    (這個元數(shù)據(jù)是啥意思網(wǎng)上查詢了下有人這樣說:Hibernate中有一個非常豐富的元數(shù)據(jù)模型东亦,含有所有的實體和值類型數(shù)據(jù)的元數(shù)據(jù) 大概意思就是這個“ 玩意兒可以獲取當前實體的某些配置和信息 這些信息參數(shù)不是一般的多哦”)

  2. SessionFactory 接口
    一個SessionFactory實例對應(yīng)一個數(shù)據(jù)存儲源,應(yīng)用從SessionFactory中獲取Sessin實例唬渗。SessionFactory有一下特點:

  • 它是線程安全的(好高端)典阵,意思就是說 它的同一個實例可以被應(yīng)用的多個線程共享。
  • 它是重量級的镊逝,這意味著不能隨意創(chuàng)建或銷毀它的實例壮啊,如果應(yīng)用只訪問一個數(shù)據(jù)庫,只需要創(chuàng)建一個SessinFactory實例撑蒜,在應(yīng)用初始化的時候創(chuàng)建該實例他巨。如果應(yīng)用同時訪問多個數(shù)據(jù)庫充坑,則需要為每個數(shù)據(jù)庫創(chuàng)建一個單獨的SessionFactory實例减江。

之所以說SessinFactory 是重量級的染突,是應(yīng)為它需要一個很大的緩存,用來存放預(yù)定義的SQL語句及映射元數(shù)據(jù)等辈灼。用戶還可以問SessionFactory配置一個緩存插件份企,這個緩存被稱為Hibernate的二級緩存,該緩存用來存放被工作單元度過的數(shù)據(jù)將來其他工作單元可能會 重用這些數(shù)據(jù)巡莹。因此這個緩存中的數(shù)據(jù)能被所有工作單元共享司志。一個工作單元通常對應(yīng)一個數(shù)據(jù)庫事物

  1. Session 接口
    上面已經(jīng)說了Session 是從SessionFactory實例中獲取來的,那么Sessin是干什么的呢降宅,Session接口是Hibernate應(yīng)用最廣泛的接口骂远,(好像是真的,之前自己做示例的時候確實用的多)腰根。Session也被稱為持久化管理器激才,它提供了和持久化相關(guān)的操作,保存额嘿、更新瘸恼、刪除、加載和查詢對象册养。
    接下來說下Sessin的特點:
  • Session不是線程安全的东帅,因此設(shè)計軟件架構(gòu)時,應(yīng)該避免多個線程共享同一個Session實例球拦。(什么鬼靠闭!管它呢,記住就好坎炼,聯(lián)想SessionFactory是線程安全的愧膀,可共享)。
  • Session實例是輕量級的点弯,所謂輕量級扇调,是指它的創(chuàng)建和銷毀不需要消耗太多的資源。這意味著程序中可以經(jīng)常創(chuàng)建和銷毀Sessin對象(突然想到之前對SessionFactory頻繁做close操作抢肛,以后的注意了)狼钮,如為每個客戶請求分配單獨的Session實例,或者為每個工作單元分配單獨的Sessin實例捡絮。

Sessin有一個緩存熬芜,被稱為Hibernate的一級緩存,它存放被當前工作單元加載的對象福稳。每個Sessin都有自己的緩存涎拉,這個Session實例的緩存只能被當前工作單元訪問。

  1. Transaction 接口
    Transaction 接口是Hibernate的數(shù)據(jù)庫事務(wù)接口,它對底層的事務(wù)接口做了封裝鼓拧,底層事務(wù)接口包括:
  • JDBC API
  • JTA (Java Transaction API )
  • CORBA ( Common Object Requet Broker Architecture) API
    Hibernate 應(yīng)用可通過一致的Transaction 接口來聲明事物邊界這有助于應(yīng)用在不同環(huán)境中移植半火。
Paste_Image.png
  1. Query 和 Criteria 接口
    Query和Criteria 接口是Hibernate的查詢接口,用于向數(shù)據(jù)庫查詢對象季俩,以及控制執(zhí)行查詢的過程钮糖。Query 實例包裝了一個HQL (Hibernate Query Language)查詢語句,HQL和SQL查詢語句有些相似酌住,但HQL是面向?qū)ο蟮?/strong>店归,它引用類名及類的屬性名,而不是表名和表字段酪我。Criteria接口完全封裝了基于字符串形式的查詢語句消痛,比Query更加面向?qū)ο螅珻riteria接口擅長于執(zhí)行動態(tài)查詢都哭。

2.4.2 事件處理接口

本小結(jié)內(nèi)容比較少秩伞,主要是提點一下。詳細還得到后面說质涛。
當程序通過 Hibernate來加載稠歉、保存、更新或者刪除對象時汇陆,會觸發(fā)Hibernate的攔截器及事件監(jiān)聽器做出響應(yīng)的處理怒炸。
我理解為,當我們對數(shù)據(jù)或者對象做操作的同時毡代,可以做做其他事兒阅羹,而誰來告訴我呢,那么就是本小結(jié)所說的時間處理接口啦

  • 事件及事件監(jiān)聽接口:在Hibernate API 針對沒沒一種事件都有相應(yīng)的時間監(jiān)聽器教寂,如加載對象時觸發(fā)org.hibernate.event.LoadEvent事件捏鱼、該事件由org.hibernate.event.LoadEventListener監(jiān)聽處理。等等

  • org.hibernate.Interceptor 接口:應(yīng)用程序可以實現(xiàn)Interceptor接口的類酪耕,Interceptor實現(xiàn)類負責(zé)響應(yīng)持久化類的實例被加載导梆、保存、更新或刪除的事件迂烁。
    (9.2章節(jié)會詳細說明 Interceptor接口)

2.4.3 Hibernate 映射類型接口

org.hibernate.type.Type接口表示Hibernate映射類型看尼,用于把域?qū)ο笥成錇閿?shù)據(jù)庫的關(guān)系數(shù)據(jù)。Hibernate 為Type接口提供了各種實現(xiàn)類盟步。它們代表具體的HIbernate映射類型藏斩,例如:

  • PrimitiveType 類:映射Java基本類型包括了
    • ByteType
    • ShortType
    • IntegerType
    • LongType
    • FloatType
    • DoubleType
    • CharacterType
    • BooleanType
  • DateType:映射java日期類型。
  • BinaryType: 映射Byte[]類型
Paste_Image.png

該節(jié)內(nèi)容還是要掌握的却盘,有用的著的地方狰域。比如傳參數(shù)的時候類型怎么弄該怎么綁定都是有講究滴媳拴。具體我們到后面的實戰(zhàn)演練的時候在用。

Hibernate 還允許用戶以實現(xiàn)UserTypeCompositeUserType接口的方式兆览,定義客戶化映射類型屈溉,詳細后面介紹。

本篇文章就到這兒了拓颓,下一篇文章將會創(chuàng)建 一個Hibernate應(yīng)用语婴。
http://www.reibang.com/p/548c9706433f

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市驶睦,隨后出現(xiàn)的幾起案子贪嫂,更是在濱河造成了極大的恐慌枢劝,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袍榆,死亡現(xiàn)場離奇詭異廉羔,居然都是意外死亡溉痢,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門憋他,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孩饼,“玉大人,你說我怎么就攤上這事竹挡《迫ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵揪罕,是天一觀的道長梯码。 經(jīng)常有香客問我,道長好啰,這世上最難降的妖魔是什么轩娶? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮框往,結(jié)果婚禮上鳄抒,老公的妹妹穿的比我還像新娘。我一直安慰自己椰弊,他們只是感情好许溅,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著男应,像睡著了一般闹司。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沐飘,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天游桩,我揣著相機與錄音牲迫,去河邊找鬼。 笑死借卧,一個胖子當著我的面吹牛盹憎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播铐刘,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼陪每,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了镰吵?” 一聲冷哼從身側(cè)響起檩禾,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疤祭,沒想到半個月后盼产,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡勺馆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年戏售,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片草穆。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡灌灾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悲柱,到底是詐尸還是另有隱情锋喜,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布诗祸,位于F島的核電站跑芳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏直颅。R本人自食惡果不足惜博个,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望功偿。 院中可真熱鬧盆佣,春花似錦、人聲如沸械荷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吨瞎。三九已至痹兜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颤诀,已是汗流浹背字旭。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工对湃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人遗淳。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓拍柒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親屈暗。 傳聞我的和親對象是個殘疾皇子拆讯,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容

  • Hibernate: 一個持久化框架 一個ORM框架 加載:根據(jù)特定的OID,把一個對象從數(shù)據(jù)庫加載到內(nèi)存中OID...
    JHMichael閱讀 1,977評論 0 27
  • Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了非常輕量級的對象封裝养叛,它將POJO與數(shù)據(jù)庫...
    蘭緣小妖閱讀 1,211評論 1 18
  • 這部分主要是開源Java EE框架方面的內(nèi)容种呐,包括Hibernate、MyBatis一铅、Spring陕贮、Spring ...
    雜貨鋪老板閱讀 1,389評論 0 2
  • 本文包括: 1、CRM 項目的整體介紹 2潘飘、Hibernate 框架概述 3、Hibernate 快速入門 4掉缺、H...
    廖少少閱讀 3,475評論 9 66
  • 由于去年給自己的孩子們申請到四萬科研經(jīng)費卜录,年中評審兩萬沒花完,原因有一點孩子們自己沒那么多自由現(xiàn)金流來墊眶明,另外一點...
    星河濤聲99閱讀 332評論 0 0