www.tjgcgs88.cn-狠狠久久亚洲欧美专区不卡,久久精品国产99久久无毒不卡,噼里啪啦国语版在线观看,zσzσzσ女人极品另类

  • <strike id="qgi8o"><td id="qgi8o"></td></strike>
  • <ul id="qgi8o"><acronym id="qgi8o"></acronym></ul>
  • <li id="qgi8o"></li>
    <ul id="qgi8o"></ul>
    <strike id="qgi8o"><rt id="qgi8o"></rt></strike>
    <ul id="qgi8o"><center id="qgi8o"></center></ul>
  • <kbd id="qgi8o"></kbd>

    什么是hibernate中的二級(jí)緩存 Hibernate 二級(jí)緩存的作用

    第一級(jí)別的緩存是Session級(jí)別的緩存,是屬于事務(wù)范圍的緩存,由Hibernate管理,一般無(wú)需進(jìn)行干預(yù)。第二級(jí)別的緩存是SessionFactory級(jí)別的緩存,是屬于進(jìn)程范圍的緩存。


    二級(jí)緩存也分為了兩種

    內(nèi)置緩存:Hibernate自帶的,不可卸載,通常在Hibernate的初始化階段,Hibernate會(huì)把映射元數(shù)據(jù)和預(yù)定義的SQL語(yǔ)句放置到SessionFactory的緩存中。該內(nèi)置緩存是只讀的。

    外置緩存:通常說(shuō)的二級(jí)緩存也就是外置緩存,在默認(rèn)情況下SessionFactory不會(huì)啟用這個(gè)緩存插件,外置緩存中的數(shù)據(jù)是數(shù)據(jù)庫(kù)數(shù)據(jù)的復(fù)制,外置緩存的物理介質(zhì)可以是內(nèi)存或者硬盤(pán)。

    hibernate二級(jí)緩存的結(jié)構(gòu)


    2.并發(fā)訪問(wèn)策略

    transactional

    (事務(wù)型)

    僅在受管理的環(huán)境中適用

    提供Repeatable Read事務(wù)隔離級(jí)別

    適用經(jīng)常被讀,很少修改的數(shù)據(jù)

    可以防止臟讀和不可重復(fù)讀的并發(fā)問(wèn)題

    緩存支持事務(wù),發(fā)生異常的時(shí)候,緩存也能夠回滾

    read-write

    (讀寫(xiě)型)

    提供Read Committed事務(wù)隔離級(jí)別

    在非集群的環(huán)境中適用

    適用經(jīng)常被讀,很少修改的數(shù)據(jù)

    可以防止臟讀

    更新緩存的時(shí)候會(huì)鎖定緩存中的數(shù)據(jù)

    nonstrict-read-write

    (非嚴(yán)格讀寫(xiě)型)

    適用極少被修改,偶爾允許臟讀的數(shù)據(jù)(兩個(gè)事務(wù)同時(shí)修改數(shù)據(jù)的情況很少見(jiàn))

    不保證緩存和數(shù)據(jù)庫(kù)中數(shù)據(jù)的一致性

    為緩存數(shù)據(jù)設(shè)置很短的過(guò)期時(shí)間,從而盡量避免臟讀

    不鎖定緩存中的數(shù)據(jù)

    read-only

    (只讀型)

    適用從來(lái)不會(huì)被修改的數(shù)據(jù)(如參考數(shù)據(jù))

    在此模式下,如果對(duì)數(shù)據(jù)進(jìn)行更新操作,會(huì)有異常

    事務(wù)隔離級(jí)別低,并發(fā)性能高

    在集群環(huán)境中也能完美運(yùn)作

    分析:通過(guò)上述表格分析如下

    適合放入二級(jí)緩存中數(shù)據(jù)

    很少被修改

    不是很重要的數(shù)據(jù),允許出現(xiàn)偶爾的并發(fā)問(wèn)題

    不適合放入二級(jí)緩存中的數(shù)據(jù)

    經(jīng)常被修改

    財(cái)務(wù)數(shù)據(jù),絕對(duì)不允許出現(xiàn)并發(fā)問(wèn)題

    與其他應(yīng)用數(shù)據(jù)共享的數(shù)據(jù)




    緩存是介于應(yīng)用程序和物理數(shù)據(jù)源之間,其作用是為了降低應(yīng)用程序?qū)ξ锢頂?shù)據(jù)源訪問(wèn)的頻次,從而提高了應(yīng)用的運(yùn)行性能。緩存內(nèi)的數(shù)據(jù)是對(duì)物理數(shù)據(jù)源中的數(shù)據(jù)的復(fù)制,應(yīng)用程序在運(yùn)行時(shí)從緩存讀寫(xiě)數(shù)據(jù),在特定的時(shí)刻或事件會(huì)同步緩存和物理數(shù)據(jù)源的數(shù)據(jù)。
    緩存的介質(zhì)一般是內(nèi)存,所以讀寫(xiě)速度很快。但如果緩存中存放的數(shù)據(jù)量非常大時(shí),也會(huì)用硬盤(pán)作為緩存介質(zhì)。緩存的實(shí)現(xiàn)不僅僅要考慮存儲(chǔ)的介質(zhì),還要考慮到管理緩存的并發(fā)訪問(wèn)和緩存數(shù)據(jù)的生命周期。

    Hibernate的緩存包括Session的緩存和SessionFactory的緩存,其中SessionFactory的緩存又可以分為兩類(lèi):內(nèi)置緩存和外置緩存。Session的緩存是內(nèi)置的,不能被卸載,也被稱(chēng)為Hibernate的第一級(jí)緩存。SessionFactory的內(nèi)置緩存和Session的緩存在實(shí)現(xiàn)方式上比較相似,前者是SessionFactory對(duì)象的一些集合屬性包含的數(shù)據(jù),后者是指Session的一些集合屬性包含的數(shù)據(jù)。SessionFactory的內(nèi)置緩存中存放了映射元數(shù)據(jù)和預(yù)定義SQL語(yǔ)句,映射元數(shù)據(jù)是映射文件中數(shù)據(jù)的拷貝,而預(yù)定義SQL語(yǔ)句是在Hibernate初始化階段根據(jù)映射元數(shù)據(jù)推導(dǎo)出來(lái),SessionFactory的內(nèi)置緩存是只讀的,應(yīng)用程序不能修改緩存中的映射元數(shù)據(jù)和預(yù)定義SQL語(yǔ)句,因此SessionFactory不需要進(jìn)行內(nèi)置緩存與映射文件的同步。SessionFactory的外置緩存是一個(gè)可配置的插件。在默認(rèn)情況下,SessionFactory不會(huì)啟用這個(gè)插件。外置緩存的數(shù)據(jù)是數(shù)據(jù)庫(kù)數(shù)據(jù)的拷貝,外置緩存的介質(zhì)可以是內(nèi)存或者硬盤(pán)。SessionFactory的外置緩存也被稱(chēng)為Hibernate的第二級(jí)緩存。

    Hibernate的這兩級(jí)緩存都位于持久化層,存放的都是數(shù)據(jù)庫(kù)數(shù)據(jù)的拷貝,那么它們之間的區(qū)別是什么呢?為了理解二者的區(qū)別,需要深入理解持久化層的緩存的兩個(gè)特性:緩存的范圍和緩存的并發(fā)訪問(wèn)策略。

    持久化層的緩存的范圍

    緩存的范圍決定了緩存的生命周期以及可以被誰(shuí)訪問(wèn)。緩存的范圍分為三類(lèi)。

    1 事務(wù)范圍:緩存只能被當(dāng)前事務(wù)訪問(wèn)。緩存的生命周期依賴(lài)于事務(wù)的生命周期,當(dāng)事務(wù)結(jié)束時(shí),緩存也就結(jié)束生命周期。在此范圍下,緩存的介質(zhì)是內(nèi)存。事務(wù)可以是數(shù)據(jù)庫(kù)事務(wù)或者應(yīng)用事務(wù),每個(gè)事務(wù)都有獨(dú)自的緩存,緩存內(nèi)的數(shù)據(jù)通常采用相互關(guān)聯(lián)的的對(duì)象形式。

    2 進(jìn)程范圍:緩存被進(jìn)程內(nèi)的所有事務(wù)共享。這些事務(wù)有可能是并發(fā)訪問(wèn)緩存,因此必須對(duì)緩存采取必要的事務(wù)隔離機(jī)制。緩存的生命周期依賴(lài)于進(jìn)程的生命周期,進(jìn)程結(jié)束時(shí),緩存也就結(jié)束了生命周期。進(jìn)程范圍的緩存可能會(huì)存放大量的數(shù)據(jù),所以存放的介質(zhì)可以是內(nèi)存或硬盤(pán)。緩存內(nèi)的數(shù)據(jù)既可以是相互關(guān)聯(lián)的對(duì)象形式也可以是對(duì)象的松散數(shù)據(jù)形式。松散的對(duì)象數(shù)據(jù)形式有點(diǎn)類(lèi)似于對(duì)象的序列化數(shù)據(jù),但是對(duì)象分解為松散的算法比對(duì)象序列化的算法要求更快。

    3 集群范圍:在集群環(huán)境中,緩存被一個(gè)機(jī)器或者多個(gè)機(jī)器的進(jìn)程共享。緩存中的數(shù)據(jù)被復(fù)制到集群環(huán)境中的每個(gè)進(jìn)程節(jié)點(diǎn),進(jìn)程間通過(guò)遠(yuǎn)程通信來(lái)保證緩存中的數(shù)據(jù)的一致性,緩存中的數(shù)據(jù)通常采用對(duì)象的松散數(shù)據(jù)形式。

    對(duì)大多數(shù)應(yīng)用來(lái)說(shuō),應(yīng)該慎重地考慮是否需要使用集群范圍的緩存,因?yàn)樵L問(wèn)的速度不一定會(huì)比直接訪問(wèn)數(shù)據(jù)庫(kù)數(shù)據(jù)的速度快多少。

    持久化層可以提供多種范圍的緩存。如果在事務(wù)范圍的緩存中沒(méi)有查到相應(yīng)的數(shù)據(jù),還可以到進(jìn)程范圍或集群范圍的緩存內(nèi)查詢(xún),如果還是沒(méi)有查到,那么只有到數(shù)據(jù)庫(kù)中查詢(xún)。事務(wù)范圍的緩存是持久化層的第一級(jí)緩存,通常它是必需的;進(jìn)程范圍或集群范圍的緩存是持久化層的第二級(jí)緩存,通常是可選的。

    持久化層的緩存的并發(fā)訪問(wèn)策略

    當(dāng)多個(gè)并發(fā)的事務(wù)同時(shí)訪問(wèn)持久化層的緩存的相同數(shù)據(jù)時(shí),會(huì)引起并發(fā)問(wèn)題,必須采用必要的事務(wù)隔離措施。

    在進(jìn)程范圍或集群范圍的緩存,即第二級(jí)緩存,會(huì)出現(xiàn)并發(fā)問(wèn)題。因此可以設(shè)定以下四種類(lèi)型的并發(fā)訪問(wèn)策略,每一種策略對(duì)應(yīng)一種事務(wù)隔離級(jí)別。

    事務(wù)型:僅僅在受管理環(huán)境中適用。它提供了Repeatable Read事務(wù)隔離級(jí)別。對(duì)于經(jīng)常被讀但很少修改的數(shù)據(jù),可以采用這種隔離類(lèi)型,因?yàn)樗梢苑乐古K讀和不可重復(fù)讀這類(lèi)的并發(fā)問(wèn)題。

    讀寫(xiě)型:提供了Read Committed事務(wù)隔離級(jí)別。僅僅在非集群的環(huán)境中適用。對(duì)于經(jīng)常被讀但很少修改的數(shù)據(jù),可以采用這種隔離類(lèi)型,因?yàn)樗梢苑乐古K讀這類(lèi)的并發(fā)問(wèn)題。

    非嚴(yán)格讀寫(xiě)型:不保證緩存與數(shù)據(jù)庫(kù)中數(shù)據(jù)的一致性。如果存在兩個(gè)事務(wù)同時(shí)訪問(wèn)緩存中相同數(shù)據(jù)的可能,必須為該數(shù)據(jù)配置一個(gè)很短的數(shù)據(jù)過(guò)期時(shí)間,從而盡量避免臟讀。對(duì)于極少被修改,并且允許偶爾臟讀的數(shù)據(jù),可以采用這種并發(fā)訪問(wèn)策略。

    只讀型:對(duì)于從來(lái)不會(huì)修改的數(shù)據(jù),如參考數(shù)據(jù),可以使用這種并發(fā)訪問(wèn)策略。

    事務(wù)型并發(fā)訪問(wèn)策略是事務(wù)隔離級(jí)別最高,只讀型的隔離級(jí)別最低。事務(wù)隔離級(jí)別越高,并發(fā)性能就越低。

    什么樣的數(shù)據(jù)適合存放到第二級(jí)緩存中?

    1 很少被修改的數(shù)據(jù)

    2 不是很重要的數(shù)據(jù),允許出現(xiàn)偶爾并發(fā)的數(shù)據(jù)

    3 不會(huì)被并發(fā)訪問(wèn)的數(shù)據(jù)

    4 參考數(shù)據(jù)

    不適合存放到第二級(jí)緩存的數(shù)據(jù)?

    1 經(jīng)常被修改的數(shù)據(jù)

    2 財(cái)務(wù)數(shù)據(jù),絕對(duì)不允許出現(xiàn)并發(fā)

    3 與其他應(yīng)用共享的數(shù)據(jù)。

    Hibernate的二級(jí)緩存

    如前所述,Hibernate提供了兩級(jí)緩存,第一級(jí)是Session的緩存。由于Session對(duì)象的生命周期通常對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)事務(wù)或者一個(gè)應(yīng)用事務(wù),因此它的緩存是事務(wù)范圍的緩存。第一級(jí)緩存是必需的,不允許而且事實(shí)上也無(wú)法比卸除。在第一級(jí)緩存中,持久化類(lèi)的每個(gè)實(shí)例都具有唯一的OID。

    第二級(jí)緩存是一個(gè)可插拔的的緩存插件,它是由SessionFactory負(fù)責(zé)管理。由于SessionFactory對(duì)象的生命周期和應(yīng)用程序的整個(gè)過(guò)程對(duì)應(yīng),因此第二級(jí)緩存是進(jìn)程范圍或者集群范圍的緩存。這個(gè)緩存中存放的對(duì)象的松散數(shù)據(jù)。第二級(jí)對(duì)象有可能出現(xiàn)并發(fā)問(wèn)題,因此需要采用適當(dāng)?shù)牟l(fā)訪問(wèn)策略,該策略為被緩存的數(shù)據(jù)提供了事務(wù)隔離級(jí)別。緩存適配器用于把具體的緩存實(shí)現(xiàn)軟件與Hibernate集成。第二級(jí)緩存是可選的,可以在每個(gè)類(lèi)或每個(gè)集合的粒度上配置第二級(jí)緩存。

    Hibernate的二級(jí)緩存策略的一般過(guò)程如下:

    1) 條件查詢(xún)的時(shí)候,總是發(fā)出一條select * from table_name where …. (選擇所有字段)這樣的SQL語(yǔ)句查詢(xún)數(shù)據(jù)庫(kù),一次獲得所有的數(shù)據(jù)對(duì)象。

    2) 把獲得的所有數(shù)據(jù)對(duì)象根據(jù)ID放入到第二級(jí)緩存中。

    3) 當(dāng)Hibernate根據(jù)ID訪問(wèn)數(shù)據(jù)對(duì)象的時(shí)候,首先從Session一級(jí)緩存中查;查不到,如果配置了二級(jí)緩存,那么從二級(jí)緩存中查;查不到,再查詢(xún)數(shù)據(jù)庫(kù),把結(jié)果按照ID放入到緩存。

    4) 刪除、更新、增加數(shù)據(jù)的時(shí)候,同時(shí)更新緩存。

    Hibernate的二級(jí)緩存策略,是針對(duì)于ID查詢(xún)的緩存策略,對(duì)于條件查詢(xún)則毫無(wú)作用。為此,Hibernate提供了針對(duì)條件查詢(xún)的Query緩存。

    Hibernate的Query緩存策略的過(guò)程如下:

    1) Hibernate首先根據(jù)這些信息組成一個(gè)Query Key,Query Key包括條件查詢(xún)的請(qǐng)求一般信息:SQL, SQL需要的參數(shù),記錄范圍(起始位置rowStart,最大記錄個(gè)數(shù)maxRows),等。

    2) Hibernate根據(jù)這個(gè)Query Key到Query緩存中查找對(duì)應(yīng)的結(jié)果列表。如果存在,那么返回這個(gè)結(jié)果列表;如果不存在,查詢(xún)數(shù)據(jù)庫(kù),獲取結(jié)果列表,把整個(gè)結(jié)果列表根據(jù)Query Key放入到Query緩存中。

    3) Query Key中的SQL涉及到一些表名,如果這些表的任何數(shù)據(jù)發(fā)生修改、刪除、增加等操作,這些相關(guān)的Query Key都要從緩存中清空。

    第一級(jí)緩存是Session的緩存.
    二級(jí)緩存是進(jìn)程范圍或群集范圍的緩存,也就是SessionFactory的外置緩存

    在向大家詳細(xì)介紹Hibernate二級(jí)緩存之前,首先讓大家了解下一級(jí)緩存,然后全面介紹Hibernate二級(jí)緩存。

    Hibernate中提供了兩級(jí)Cache,第一級(jí)別的緩存是Session級(jí)別的緩存,它是屬于事務(wù)范圍的緩存。這一級(jí)別的緩存由hibernate管理的,一般情況下無(wú)需進(jìn)行干預(yù);第二級(jí)別的緩存是SessionFactory級(jí)別的緩存,它是屬于進(jìn)程范圍或群集范圍的緩存。這一級(jí)別的緩存可以進(jìn)行配置和更改,并且可以動(dòng)態(tài)加載和卸載。 Hibernate還為查詢(xún)結(jié)果提供了一個(gè)查詢(xún)緩存,它依賴(lài)于第二級(jí)緩存。

    一. 一級(jí)緩存和二級(jí)緩存的比較:

    第一級(jí)緩存 第二級(jí)緩存 存放數(shù)據(jù)的形式相互關(guān)聯(lián)的持久化對(duì)象 對(duì)象的散裝數(shù)據(jù) 緩存的范圍事務(wù)范圍,每個(gè)事務(wù)都有單獨(dú)的第一級(jí)緩存進(jìn)程范圍或集群范圍,緩存被同一個(gè)進(jìn)程或集群范圍內(nèi)的所有事務(wù)共享并發(fā)訪問(wèn)策略由于每個(gè)事務(wù)都擁有單獨(dú)的第一級(jí)緩存,不會(huì)出現(xiàn)并發(fā)問(wèn)題,無(wú)需提供并發(fā)訪問(wèn)策略由于多個(gè)事務(wù)會(huì)同時(shí)訪問(wèn)第二級(jí)緩存中相同數(shù)據(jù),因此必須提供適當(dāng)?shù)牟l(fā)訪問(wèn)策略,來(lái)保證特定的事務(wù)隔離級(jí)別數(shù)據(jù)過(guò)期策略沒(méi)有提供數(shù)據(jù)過(guò)期策略。處于一級(jí)緩存中的對(duì)象永遠(yuǎn)不會(huì)過(guò)期,除非應(yīng)用程序顯式清空緩存或者清除特定的對(duì)象必須提供數(shù)據(jù)過(guò)期策略,如基于內(nèi)存的緩存中的對(duì)象的最大數(shù)目,允許對(duì)象處于緩存中的最長(zhǎng)時(shí)間,以及允許對(duì)象處于緩存中的最長(zhǎng)空閑時(shí)間物理存儲(chǔ)介質(zhì)內(nèi)存內(nèi)存和硬盤(pán)。對(duì)象的散裝數(shù)據(jù)首先存放在基于內(nèi)存的緩存中,當(dāng)內(nèi)存中對(duì)象的數(shù)目達(dá)到數(shù)據(jù)過(guò)期策略中指定上限時(shí),就會(huì)把其余的對(duì)象寫(xiě)入基于硬盤(pán)的緩存中。緩存的軟件實(shí)現(xiàn)在Hibernate的Session的實(shí)現(xiàn)中包含了緩存的實(shí)現(xiàn)由第三方提供,Hibernate僅提供了緩存適配器(CacheProvider)。用于把特定的緩存插件集成到Hibernate中。啟用緩存的方式只要應(yīng)用程序通過(guò)Session接口來(lái)執(zhí)行保存、更新、刪除、加載和查詢(xún)數(shù)據(jù)庫(kù)數(shù)據(jù)的操作,Hibernate就會(huì)啟用第一級(jí)緩存,把數(shù)據(jù)庫(kù)中的數(shù)據(jù)以對(duì)象的形式拷貝到緩存中,對(duì)于批量更新和批量刪除操作,如果不希望啟用第一級(jí)緩存,可以繞過(guò)Hibernate API,直接通過(guò)JDBC API來(lái)執(zhí)行指操作。用戶(hù)可以在單個(gè)類(lèi)或類(lèi)的單個(gè)集合的粒度上配置第二級(jí)緩存。如果類(lèi)的實(shí)例被經(jīng)常讀但很少被修改,就可以考慮使用第二級(jí)緩存。只有為某個(gè)類(lèi)或集合配置了第二級(jí)緩存,Hibernate在運(yùn)行時(shí)才會(huì)把它的實(shí)例加入到第二級(jí)緩存中。用戶(hù)管理緩存的方式第一級(jí)緩存的物理介質(zhì)為內(nèi)存,由于內(nèi)存容量有限,必須通過(guò)恰當(dāng)?shù)臋z索策略和檢索方式來(lái)限制加載對(duì)象的數(shù)目。Session的 evit()方法可以顯式清空緩存中特定對(duì)象,但這種方法不值得推薦。第二級(jí)緩存的物理介質(zhì)可以是內(nèi)存和硬盤(pán),因此第二級(jí)緩存可以存放大量的數(shù)據(jù),數(shù)據(jù)過(guò)期策略的maxElementsInMemory屬性值可以控制內(nèi)存中的對(duì)象數(shù)目。管理第二級(jí)緩存主要包括兩個(gè)方面:選擇需要使用第二級(jí)緩存的持久類(lèi),設(shè)置合適的并發(fā)訪問(wèn)策略:選擇緩存適配器,設(shè)置合適的數(shù)據(jù)過(guò)期策略。

    二. 一級(jí)緩存的管理:

    當(dāng)應(yīng)用程序調(diào)用Session的save()、update()、savaeOrUpdate()、get()或load(),以及調(diào)用查詢(xún)接口的 list()、iterate()或filter()方法時(shí),如果在Session緩存中還不存在相應(yīng)的對(duì)象,Hibernate就會(huì)把該對(duì)象加入到第一級(jí)緩存中。當(dāng)清理緩存時(shí),Hibernate會(huì)根據(jù)緩存中對(duì)象的狀態(tài)變化來(lái)同步更新數(shù)據(jù)庫(kù)。 Session為應(yīng)用程序提供了兩個(gè)管理緩存的方法: evict(Object obj):從緩存中清除參數(shù)指定的持久化對(duì)象。 clear():清空緩存中所有持久化對(duì)象。

    三. Hibernate二級(jí)緩存的管理:

    1. Hibernate二級(jí)緩存策略的一般過(guò)程如下:
    1) 條件查詢(xún)的時(shí)候,總是發(fā)出一條select * from table_name where …. (選擇所有字段)這樣的SQL語(yǔ)句查詢(xún)數(shù)據(jù)庫(kù),一次獲得所有的數(shù)據(jù)對(duì)象。
    2) 把獲得的所有數(shù)據(jù)對(duì)象根據(jù)ID放入到第二級(jí)緩存中。
    3) 當(dāng)Hibernate根據(jù)ID訪問(wèn)數(shù)據(jù)對(duì)象的時(shí)候,首先從Session一級(jí)緩存中查;查不到,如果配置了二級(jí)緩存,那么從二級(jí)緩存中查;查不到,再查詢(xún)數(shù)據(jù)庫(kù),把結(jié)果按照ID放入到緩存。
    4) 刪除、更新、增加數(shù)據(jù)的時(shí)候,同時(shí)更新緩存。
    Hibernate二級(jí)緩存策略,是針對(duì)于ID查詢(xún)的緩存策略,對(duì)于條件查詢(xún)則毫無(wú)作用。為此,Hibernate提供了針對(duì)條件查詢(xún)的Query Cache。

    2. 什么樣的數(shù)據(jù)適合存放到第二級(jí)緩存中?
    1) 很少被修改的數(shù)據(jù)
    2) 不是很重要的數(shù)據(jù),允許出現(xiàn)偶爾并發(fā)的數(shù)據(jù)
    3) 不會(huì)被并發(fā)訪問(wèn)的數(shù)據(jù)
    4) 參考數(shù)據(jù),指的是供應(yīng)用參考的常量數(shù)據(jù),它的實(shí)例數(shù)目有限,它的實(shí)例會(huì)被許多其他類(lèi)的實(shí)例引用,實(shí)例極少或者從來(lái)不會(huì)被修改。

    3. 不適合存放到第二級(jí)緩存的數(shù)據(jù)?
    1) 經(jīng)常被修改的數(shù)據(jù)
    2) 財(cái)務(wù)數(shù)據(jù),絕對(duì)不允許出現(xiàn)并發(fā)
    3) 與其他應(yīng)用共享的數(shù)據(jù)。

    4. 常用的緩存插件 Hibernater二級(jí)緩存是一個(gè)插件,下面是幾種常用的緩存插件:
    ◆EhCache:可作為進(jìn)程范圍的緩存,存放數(shù)據(jù)的物理介質(zhì)可以是內(nèi)存或硬盤(pán),對(duì)Hibernate的查詢(xún)緩存提供了支持。
    ◆OSCache:可作為進(jìn)程范圍的緩存,存放數(shù)據(jù)的物理介質(zhì)可以是內(nèi)存或硬盤(pán),提供了豐富的緩存數(shù)據(jù)過(guò)期策略,對(duì)Hibernate的查詢(xún)緩存提供了支持。
    ◆SwarmCache:可作為群集范圍內(nèi)的緩存,但不支持Hibernate的查詢(xún)緩存。
    ◆JBossCache:可作為群集范圍內(nèi)的緩存,支持事務(wù)型并發(fā)訪問(wèn)策略,對(duì)Hibernate的查詢(xún)緩存提供了支持。

    5. 配置Hibernate二級(jí)緩存的主要步驟:
    1) 選擇需要使用二級(jí)緩存的持久化類(lèi),設(shè)置它的命名緩存的并發(fā)訪問(wèn)策略。這是最值得認(rèn)真考慮的步驟。
    2) 選擇合適的緩存插件,然后編輯該插件的配置文件。

    ssh緩存配置怎么操作
    一、了解 Hibernate的session提供了一級(jí)緩存,每個(gè)session,對(duì)同一個(gè)id進(jìn)行兩次load,不會(huì)發(fā)送兩條sql給數(shù)據(jù)庫(kù),但session關(guān)閉時(shí),一級(jí)緩存失效。二級(jí)緩存是SessionFactory級(jí)別的全局緩存,它底下可以使用不同的緩存類(lèi)庫(kù),比如ehcache、oscache等。二、配置 1、在applicationContext.xml中定義如下:<bean id="...

    如何設(shè)計(jì)一個(gè)本地緩存?
    在高性能服務(wù)架構(gòu)設(shè)計(jì)中,緩存是不可或缺的環(huán)節(jié)。通過(guò)在Redis或Memcached等緩存中間件中存儲(chǔ)熱點(diǎn)數(shù)據(jù),可以顯著提高訪問(wèn)速度并減輕數(shù)據(jù)庫(kù)壓力。然而,僅僅依賴(lài)遠(yuǎn)程緩存可能不夠,在某些場(chǎng)景下,還需要與本地緩存配合,形成以本地緩存作為一級(jí)緩存、遠(yuǎn)程緩存作為二級(jí)緩存的架構(gòu)。選擇本地緩存方案時(shí),可以考慮...

    請(qǐng)簡(jiǎn)述MyBatis和Hibernate的區(qū)別。
    不同點(diǎn):Hibernate的二級(jí)緩存配置在SessionFactory生成的配置文件中進(jìn)行詳細(xì)配置,然后再在具體的表-對(duì)象映射中配置是那種緩存。MyBatis的二級(jí)緩存配置都是在每個(gè)具體的表-對(duì)象映射中進(jìn)行詳細(xì)配置,這樣針對(duì)不同的表可以自定義不同的緩存機(jī)制。并且Mybatis可以在命名空間中共享相同的緩存配置和實(shí)例,通過(guò)Cache-...

    Hibernate和MyBatis哪個(gè)好
    3,一個(gè)會(huì)話中不需要操作多個(gè)對(duì)象,只需要操作Session對(duì)象。4,關(guān)閉資源只需要關(guān)閉一個(gè)Session便可。這就是Hibernate的優(yōu)勢(shì),在配置了映射文件和數(shù)據(jù)庫(kù)連接文件后,Hibernate就可以通過(guò)Session操作,非常容易,消除了jdbc帶來(lái)的大量代碼,大大提高了編程的簡(jiǎn)易性和可讀性。Hibernate還提供了級(jí)聯(lián),緩存,映射,...

    Hibernate與jdbc哪個(gè)好?各自的優(yōu)點(diǎn)和缺點(diǎn)
    三、封裝性:hibernate提供了大量的封裝(這也是它最大的缺點(diǎn)),很多數(shù)據(jù)操作以及關(guān)聯(lián)關(guān)系等都被封裝的很好,開(kāi)發(fā)者不需寫(xiě)大量的sql語(yǔ)句,這就極大的提高了開(kāi)發(fā)者的開(kāi)發(fā)效率。四、緩存機(jī)制:hibernate提供了緩存機(jī)制(session緩存,二級(jí)緩存,查詢(xún)緩存),對(duì)于那些改動(dòng)不大且經(jīng)常使用的數(shù)據(jù),可以將它們放到緩存中,不必在每次使用...

    hibernate哪個(gè)版本好
    在Hibernate 5中,主要的改進(jìn)和增強(qiáng)包括:1. 提高了性能。Hibernate 5在性能上進(jìn)行了優(yōu)化,尤其是在二級(jí)緩存方面,這使得應(yīng)用程序在處理大量數(shù)據(jù)時(shí)響應(yīng)速度更快。2. 新特性豐富。這個(gè)版本引入了新的特性,例如JPA 2.1支持,這使得開(kāi)發(fā)者可以更方便地管理和操作實(shí)體關(guān)系。同時(shí),Hibernate 5還支持Java 8的...

    mybatis和hibernate的區(qū)別是什么?
    Hibernate:則是一個(gè)全自動(dòng)的ORM框架,它自動(dòng)生成SQL語(yǔ)句并處理對(duì)象的持久化。開(kāi)發(fā)者無(wú)需關(guān)心具體的SQL細(xì)節(jié),只需通過(guò)注解或XML配置實(shí)現(xiàn)對(duì)象與數(shù)據(jù)庫(kù)表的映射。2. 緩存機(jī)制:MyBatis:具有一級(jí)和二級(jí)緩存機(jī)制,可以通過(guò)緩存提高數(shù)據(jù)訪問(wèn)效率。Hibernate:擁有更為完善的緩存體系,包括事務(wù)級(jí)別的緩存和進(jìn)程級(jí)別...

    Hibernate是什么?
    具體來(lái)說(shuō),Hibernate通過(guò)映射文件或注解的方式,將Java類(lèi)與數(shù)據(jù)庫(kù)表進(jìn)行關(guān)聯(lián),使得開(kāi)發(fā)者可以通過(guò)操作Java對(duì)象來(lái)間接地操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)。Hibernate框架提供了豐富的API,可以方便地進(jìn)行數(shù)據(jù)查詢(xún)、插入、更新和刪除等操作,同時(shí)支持事務(wù)管理和二級(jí)緩存等高級(jí)特性。Hibernate框架的出現(xiàn),大大簡(jiǎn)化了Java開(kāi)發(fā)者與...

    mybatis和hibernate的區(qū)別
    MyBatis要維護(hù)dao層數(shù)據(jù)庫(kù)字段和bean屬性映射,Hibernate要在bean中添加字段映射。2.運(yùn)行效率 MyBatis支持原生sql自定義查詢(xún)字段更加靈活,基本屬于JDBC操作。hibernate是對(duì)JDBC更復(fù)雜的封裝。每次查詢(xún)需要完整的映射,對(duì)待復(fù)雜的查詢(xún)通過(guò)HQL語(yǔ)句生成的sql語(yǔ)句效率不能保證。所以MyBatis會(huì)比Hi稍快。

    使用hibernate二級(jí)緩存時(shí)對(duì)象不需要序列化嗎
    終于有這個(gè)時(shí)間自己查查這個(gè)原因了,翻翻書(shū),看看網(wǎng)頁(yè),針對(duì)這個(gè)問(wèn)題資料還是比較少的,不過(guò)本人也了解到了一些,對(duì)po實(shí)現(xiàn)序列化有了更深的了解,為什么要實(shí)現(xiàn)序列化原因總結(jié)如下:1、Hibernate使用組件作為復(fù)合主鍵時(shí),該組件類(lèi)必須滿(mǎn)足一個(gè)條件就是:實(shí)現(xiàn)java.io.serializable接口。2、MyBatis中配置緩存時(shí),...

    相關(guān)評(píng)說(shuō):

  • 祁泡17699384285: 什么是Hibernate緩存? -
    武侯區(qū)機(jī)械: ______ hibernate 一般用到是一級(jí)緩存 也就是 session級(jí)別的緩存;二級(jí)緩存指的是sessionfactory的緩存;
  • 祁泡17699384285: hibernate的延時(shí)加載與二級(jí)緩存具體怎么解釋
    武侯區(qū)機(jī)械: ______ 延遲加載 意思是僅當(dāng)應(yīng)用系統(tǒng)需要訪問(wèn)關(guān)聯(lián)的目標(biāo)對(duì)象的數(shù)據(jù)時(shí),hibernate才載入他們的值.就是只在一個(gè)對(duì)象調(diào)用他的“一對(duì)多”或“多對(duì)多”關(guān)聯(lián)時(shí)的目標(biāo)對(duì)象才將目標(biāo)對(duì)象讀取出來(lái). 利用hibernate.initialize(),在關(guān)閉session后取得目...
  • 祁泡17699384285: hibernate二級(jí)緩存什么時(shí)候用 -
    武侯區(qū)機(jī)械: ______ Hibernate緩存何時(shí)使用和如何使用?Hibernate緩存分為二級(jí),第一級(jí)存放于session中稱(chēng)為一級(jí)緩存,默認(rèn)帶有且不能卸載.第二級(jí)是由sessionFactory控制的進(jìn)程級(jí)緩存.是全局共享的緩存,凡是會(huì)調(diào)用二級(jí)緩存的查詢(xún)方法 都會(huì)從中受益....
  • 祁泡17699384285: 標(biāo)準(zhǔn)SQL規(guī)范中定義的四個(gè)事務(wù)隔離級(jí)別是什么?
    武侯區(qū)機(jī)械: ______ 在標(biāo)準(zhǔn)SQL規(guī)范中,定義了4個(gè)事務(wù)隔離級(jí)別,不同的隔離級(jí)別對(duì)事務(wù)的處理不同: ... 也可以同時(shí)考慮選擇使用Hibernate的二級(jí)緩存,它可以如同底層的數(shù)據(jù)庫(kù)事務(wù)一樣提...
  • 祁泡17699384285: hibernate中什么叫做臟數(shù)據(jù) -
    武侯區(qū)機(jī)械: ______ Hibernate臟數(shù)據(jù)檢查 何謂臟數(shù)據(jù)(Dirty Data)? 這里的"臟"可能有些誤解,臟數(shù)據(jù)并不是說(shuō)非廢棄或者無(wú)用的數(shù)據(jù),而是指一個(gè)數(shù)據(jù)對(duì)象所攜帶的信息發(fā)生了改變之后的狀態(tài). 事務(wù)提交時(shí),HIbernate會(huì)對(duì)Session中的PO進(jìn)行檢測(cè),判斷那些...
  • 祁泡17699384285: 誰(shuí)能給介紹下hibernate的緩存機(jī)制... -
    武侯區(qū)機(jī)械: ______ 1-持久層緩存的范圍: 事務(wù)范圍:緩存只能被當(dāng)前事務(wù)訪問(wèn).緩存的生命周期依懶于事務(wù)的生命的周期.事務(wù)結(jié)束生命.緩存也就結(jié)事了其生命.在些情況下.緩存的介質(zhì)就是內(nèi)存. 進(jìn)程范圍:緩存被所有進(jìn)程內(nèi)的事務(wù)共享.這些事務(wù)緩存有可能是并發(fā)訪...
  • 祁泡17699384285: SSH中怎么配置Hibernate的二級(jí)緩存 -
    武侯區(qū)機(jī)械: ______ <prop key="hibernate.cache.use_query_cache">true</prop><prop key="hibernate.cache.use_second_level_cache"> true</prop> 這樣寫(xiě),再加上ehcache.xml的緩存文件:<cache name="com.model.Role" maxElementsInMemory="5" eternal="false" timeToIdleSeconds="100" timeToLiveSeconds="180" overflowToDisk="false" /> 這是一里面的一條信息.
  • 祁泡17699384285: hibernate開(kāi)啟二級(jí)緩存還會(huì)放入一級(jí)緩存嗎 -
    武侯區(qū)機(jī)械: ______ 會(huì),可以配置的,一般配置在一級(jí)緩存中緩存對(duì)象的個(gè)數(shù),超過(guò)了這個(gè)個(gè)數(shù)就會(huì)存入二級(jí)緩存.
  • 祁泡17699384285: Hibernate 緩存有幾種 -
    武侯區(qū)機(jī)械: ______ Hibernate的緩存包括Session的緩存和SessionFactory的緩存,其中SessionFactory的緩存又可以分為兩類(lèi):內(nèi)置緩存和外置緩存.Session的緩存是內(nèi)置的,不能被卸載,也被稱(chēng)為Hibernate的第一級(jí)緩存.SessionFactory的內(nèi)置緩存和Session...
  • 祁泡17699384285: java里hibernate的一、二級(jí)緩存是怎么回事?
    武侯區(qū)機(jī)械: ______ 一級(jí)緩存是session,二級(jí)緩存是SessionFactory.二級(jí)緩存分為對(duì)象緩存和查詢(xún)緩存(內(nèi)置和外置緩存).用的時(shí)候,要在hibernate里設(shè)置,怎么設(shè)的不會(huì)....應(yīng)該就問(wèn)這么多.查詢(xún)緩存就是預(yù)定義的sql語(yǔ)句. P.S:雖然我要分沒(méi)用,你還是給我吧...
  • 亚洲成a∧人片在线播放调教| 内射白浆一区二区在线观看| 樱桃电视剧西瓜视频在线观看| 尤物无码在线观看视频| 在线观看国内精品视频| 91精品国产91热久久久福利| 日韩精品久久久肉伦网站| 国产精品久久久久久亚洲影视| 最近最新电影大全免费观看| 国内自拍户外极限露出视频|