<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # 簡介 Hibernate的一級緩存就是指session緩存。 ![](https://box.kancloud.cn/a7a3523af300a32fc8cb5918fd9f45ff_1730x120.png) actionQueue它是一個行列隊列,它主要記錄crud操作的相關信息 persistenceContext它是持久化上下文,它其實是真正緩存。 在session中定義了一系列的集合來存儲數據,它們構成session緩存。 只要session沒有關閉,它就會一直存在。 當我們通過hibernate中的session提供的一些API例如 save get update等進行操作時,就會將持久化對象保存到session中,當下一次在去查詢緩存中具有的對象(OID值來判斷), 就不會去從數據庫查詢,而是直接從緩存中獲取。 Hibernate的一級緩存存在的目的就是為了減少對數據庫訪問。 在hibernate中還有一個二級緩存,它是SessionFactory級別緩存。 # 一級緩存 ## 簡介 ![](https://box.kancloud.cn/5ee49f33cfc8aaaaab370dc655efe261_849x550.png) 演示一級緩存的存在 ![](https://box.kancloud.cn/0c6edb8e113c527667cb8c9bc7d2e03c_678x217.png) 持久化對象具有自動更新數據庫的能力 ![](https://box.kancloud.cn/4cbf053372d44dd1753a0278f4ef6d9e_684x239.png) **為什么持久化對象具有自動更新數據庫的能力?** ![](https://box.kancloud.cn/fcb0217fbfdefbc5f434d6e845c949aa_829x143.png) ![](https://box.kancloud.cn/3feab998b41523c96be0d1d0f76c4f97_1113x507.png) ## 一級緩存常用API 一級緩存特點: 1. 當我們通過session的save,update saveOrupdate進行操作時,如果一級緩存中沒有對象,會將這些對象從數據庫中查詢到,存儲到一級緩存。 2. 當我們通過session的load,get,Query的list等方法進行操作時,會先判斷一級緩存中是否存在,如果沒有才會從數據庫獲取,并且將查詢的數據存儲到一級緩存中。 3. 當調用session的close方法時,session緩存清空。 clear 清空一級緩存. evict 清空一級緩存中指定的一個對象。 refresh重新查詢數據庫,用數據庫中信息來更新一級緩存與快照 ![](https://box.kancloud.cn/fd38b545ab0b02a72ecbf2603db6dbbb_1113x631.png) 一級緩存也叫做session緩存,在一個hibernate session有效,這級緩存的可干預性不強,大多于hibernate自動管理,但它提供清除緩存的方法,這在大批量增加(更新)操作是有效果的,例如,同時增加十萬條記錄,按常規進行,很可能會出現異常,這時可能需要手動清除一級緩存,session.evict以及session.clear. # Hibernate常用API-Session補充 ## update udpate操作它主要是針對于脫管對象,持久對象具有自動更新能力。 問題1:如果我們直接操作的對象是一個脫管對象,執行update會出現什么情況? Update操作時,如果對象是一個脫管對象,可以操作,它會將脫管對象轉換成持久對象在操作 如果在session中出現相同的oid兩個對象,會產生異常 ![](https://box.kancloud.cn/ee6c5efd9e0c85a86eddd2ef9de2cefc_1129x51.png) 問題2脫管對象的oid如果在數據表中不存在,會報異常? ![](https://box.kancloud.cn/1160f2c2b872f62c3e783de860d84ca7_1115x81.png) 所以:在操作中,建議我們通過持久化對象來直接修改其操作。 ## saveOrUpdate 如果對象是一個瞬時對象 --------執行save操作 如果對象是一個脫管對象---------執行update 如果是一個持久對象-------直接返回 ## delete 刪除一個脫管對象,與session關聯,在刪除 注意:如果執行delete操作,先刪除一級緩存,在刪除數據庫中的數據。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看