最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Hibernate核心思想與接口簡(jiǎn)介

 更新時(shí)間:2017年09月19日 16:03:59   作者:E_star  
這篇文章主要介紹了Hibernate核心思想與接口的相關(guān)內(nèi)容,需要的朋友可以參考下。

hibernate是一個(gè)采用ORM機(jī)制持久層的開(kāi)源框架,接下來(lái)我們聊聊它的核心思想和接口。

核心思想:ORM是將表與表之間的操作,映射成對(duì)象和對(duì)象之間的操作,這樣簡(jiǎn)化了持久層的代碼,減輕了程序員的負(fù)擔(dān)

ORM是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫(kù)存在的互不匹配的現(xiàn)象的技術(shù)。簡(jiǎn)單的說(shuō),ORM是通過(guò)使用描述對(duì)象和數(shù)據(jù)庫(kù)之間映射的元數(shù)據(jù),將java程序中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫(kù)中。本質(zhì)上就是將數(shù)據(jù)從一種形式轉(zhuǎn)換到另外一種形式。

所有的Hibernate應(yīng)用中都會(huì)訪問(wèn)Hibernate的5個(gè)核心接口

Configuration接口:配置Hibernate,根啟動(dòng)Hibernate,創(chuàng)建SessionFactory對(duì)象。

SessionFactory接口:初始化Hibernate,充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,創(chuàng)建Session對(duì)象。

Session接口:負(fù)責(zé)保存、更新、刪除、加載和查詢對(duì)象。

Transaction接口:管理事務(wù)。

Query和Criteria接口:執(zhí)行數(shù)據(jù)庫(kù)查詢。

1.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í)例。

2.SessionFactory接口

  一個(gè)SessionFactory實(shí)例對(duì)應(yīng)一個(gè)數(shù)據(jù)存儲(chǔ)源,應(yīng)用從SessionFactory中獲得Session實(shí)例。SessionFactory有以下特點(diǎn):

  它是線程安全的,這意味著它的同一個(gè)實(shí)例可以被應(yīng)用的多個(gè)線程共享。

  它是重量級(jí)的,這意味著不能隨意創(chuàng)建或銷毀它的實(shí)例。如果應(yīng)用只訪問(wèn)一個(gè)數(shù)據(jù)庫(kù),只需要?jiǎng)?chuàng)建一個(gè)SessionFactory實(shí)例,在應(yīng)用初始化的時(shí)候創(chuàng)建該實(shí)例。如果應(yīng)用同時(shí)訪問(wèn)多個(gè)數(shù)據(jù)庫(kù),則需要為每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)單獨(dú)的SessionFactory實(shí)例。

  之所以稱SessionFactory是重量級(jí)的,是因?yàn)樗枰粋€(gè)很大的緩存,用來(lái)存放預(yù)定義的SQL語(yǔ)句以能映射元數(shù)據(jù)等。用戶還可以為SesionFactory配置一個(gè)緩存插件,這個(gè)緩存插件被稱為Hibernate的第二級(jí)緩存。,該緩存用來(lái)存放被工作單元讀過(guò)的數(shù)據(jù),將來(lái)其他工作單元可能會(huì)重用這些數(shù)據(jù),因此這個(gè)緩存中的數(shù)據(jù)能夠被所有工作單元共享。一個(gè)工作單元通常對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)事務(wù)。

3.Session接口

  Session接口是Hibernate應(yīng)用使用最廣泛的接口。Session也被稱為持久化管理器,它提供了和持久化相關(guān)的操作,如添加、更新、刪除、加載和查詢對(duì)象。

Session有以下特點(diǎn):

  不是線程安全的,因此在設(shè)計(jì)軟件架構(gòu)時(shí),應(yīng)該避免多個(gè)線程共享同一個(gè)Session實(shí)例。

  Session實(shí)例是輕量級(jí)的,所謂輕量級(jí),是指它的創(chuàng)建和銷毀不需要消耗太多的資源。這意味著在程序中可以經(jīng)常創(chuàng)建和銷毀Session對(duì)象,例如為每個(gè)客戶請(qǐng)示分配單獨(dú)的Session實(shí)例,或者為每個(gè)工作單元分配單獨(dú)的Session實(shí)例。

  Session有一個(gè)緩存,被稱為Hibernate的第一級(jí)緩存,它存放被當(dāng)前工作單元加載的對(duì)象。每個(gè)Session實(shí)例都有自己的緩存,這個(gè)Sesion實(shí)例的緩存只能被當(dāng)前工作單元訪問(wèn)。

4.Transaction接口

  Transaction接口是Hibernate的數(shù)據(jù)庫(kù)事務(wù)接口,它對(duì)底層的事務(wù)接口做了封裝,底層事務(wù)接口包括:

  JDBC API、JTA(Java Transaction API)、CORBA(Common Object Requet Broker Architecture)API

  Hibernate應(yīng)用可通過(guò)一致的Transaction接口來(lái)聲明事務(wù)邊界,這有助于應(yīng)用在不同的環(huán)境容器中移植。盡管應(yīng)用也可以繞過(guò)Transaction接口,直接訪問(wèn)底層的事務(wù)接口,這種方法不值得推薦,因?yàn)樗焕趹?yīng)用在不同的環(huán)境移植。

5.Query和Criteria接口

  Query和Criteria接口是Hibernate的查詢接口,用于向數(shù)據(jù)庫(kù)查詢對(duì)象,以及控制執(zhí)行查詢的過(guò)程。Query實(shí)例包裝了一個(gè)HQL查詢語(yǔ)句,HQL查詢語(yǔ)句和SQL查詢語(yǔ)句有些相似,但HQL查詢語(yǔ)句是面向?qū)ο蟮模妙惥浼邦惖膶傩跃?,而不是表句及表的字段句。Criteria接口完全封裝了基于字符串的查詢語(yǔ)句,比Query接口更加面向?qū)ο?,Criteria接口擅長(zhǎng)執(zhí)行動(dòng)態(tài)查詢。

  Session接口的find()方法也具有數(shù)據(jù)查詢功能,但它只是執(zhí)行一些簡(jiǎn)單的HQL查詢語(yǔ)句的快捷方法,它的功能遠(yuǎn)沒(méi)有Query接口強(qiáng)大。

本文關(guān)于Hibernate核心思想與接口的介紹就到這里,希望對(duì)大家有所幫助。感謝大家對(duì)本站的支持!

相關(guān)文章

  • 深入理解Spring bean加載順序

    深入理解Spring bean加載順序

    在默認(rèn)配置下,SpringBean的加載順序主要受到Bean定義順序、依賴關(guān)系和生命周期回調(diào)方法的影響,本文就來(lái)了解一下Spring bean加載順序,感興趣的同學(xué)可以學(xué)習(xí)
    2024-10-10
  • Tomcat內(nèi)存溢出分析及解決方法

    Tomcat內(nèi)存溢出分析及解決方法

    堆是給開(kāi)發(fā)人員用的上面說(shuō)的就是,是在JVM啟動(dòng)時(shí)創(chuàng)建;非堆是留給JVM自己用的,用來(lái)存放類的信息的,本文將詳細(xì)介紹Tomcat內(nèi)存溢出,需要了解更多的朋友可以參考下
    2012-11-11
  • java  Swing基礎(chǔ)教程之圖形化實(shí)例代碼

    java Swing基礎(chǔ)教程之圖形化實(shí)例代碼

    這篇文章主要介紹了java Swing基礎(chǔ)教程之圖形化實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • spring 如何將配置信息注入靜態(tài)變量的方法

    spring 如何將配置信息注入靜態(tài)變量的方法

    本篇文章主要介紹了spring 如何將配置信息注入靜態(tài)變量的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Java實(shí)現(xiàn)合并word文檔的示例代碼

    Java實(shí)現(xiàn)合并word文檔的示例代碼

    在做項(xiàng)目中,經(jīng)常會(huì)遇到一種情況,需要將一個(gè)小word文檔的內(nèi)容插入到一個(gè)大word(主文檔)中。本文就為大家準(zhǔn)備了Java實(shí)現(xiàn)合并word文檔的方法,需要的可以參考一下
    2022-08-08
  • struts2中使用注解配置Action方法詳解

    struts2中使用注解配置Action方法詳解

    這篇文章主要介紹了struts2中使用注解配置Action方法詳解,涉及一個(gè)示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • Java方法參數(shù)傳遞如何實(shí)現(xiàn)

    Java方法參數(shù)傳遞如何實(shí)現(xiàn)

    這篇文章主要介紹了Java方法參數(shù)傳遞如何實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Linux+Docker+SpringBoot+IDEA一鍵自動(dòng)化部署的詳細(xì)步驟

    Linux+Docker+SpringBoot+IDEA一鍵自動(dòng)化部署的詳細(xì)步驟

    這篇文章主要介紹了Linux+Docker+SpringBoot+IDEA一鍵自動(dòng)化部署的詳細(xì)步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 詳解Java數(shù)組擴(kuò)容縮容與拷貝的實(shí)現(xiàn)和原理

    詳解Java數(shù)組擴(kuò)容縮容與拷貝的實(shí)現(xiàn)和原理

    這篇文章主要帶大家學(xué)習(xí)數(shù)組的擴(kuò)容、縮容及拷貝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • SpringBoot發(fā)送郵件功能 驗(yàn)證碼5分鐘過(guò)期

    SpringBoot發(fā)送郵件功能 驗(yàn)證碼5分鐘過(guò)期

    這篇文章主要為大家詳細(xì)介紹了SpringBoot發(fā)送郵件功能,驗(yàn)證碼5分鐘過(guò)期,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評(píng)論

遵化市| 和平区| 连云港市| 博客| 繁峙县| 仲巴县| 万州区| 浠水县| 阿坝| 正阳县| 六枝特区| 临江市| 华容县| 金昌市| 抚州市| 岳阳县| 桂林市| 绥阳县| 普定县| 怀化市| 上饶县| 鹿邑县| 舒城县| 巴彦淖尔市| 九龙城区| 台安县| 张家口市| 浪卡子县| 古浪县| 营山县| 大埔县| 钟祥市| 靖江市| 吐鲁番市| 和硕县| 永春县| 洛南县| 许昌县| 霸州市| 石渠县| 平利县|