1. 程式人生 > >hibernate必會面試題

hibernate必會面試題

   1. iod查詢的get和load方法區別

    

  2.Hibernate的主鍵生成策略

    主鍵不應該由使用者自己維護,應該統一管理,那麼Hibernate就提供了主鍵統一管理的方式:主鍵生成策略。

        increment                  :自動增長,是Hibernate中提供一種自動增長方式,不是資料庫中的自動增長。(適用於short、int、long型別的主鍵)

                  首先使用select max(cust_id) from cst_customer;將這個最大值+1作為下一條記錄的主鍵。對於併發訪問資料庫不適用

       identity                      :自動增長,適用於short、int、long型別的主鍵,使用的是資料庫自動增長機制。不是所有資料庫都支援自動增長,比如Oracle沒有自動增長。

       sequence                   :序列,適用於short、int、long型別的主鍵,使用序列方式完成主鍵的生成。必須是支援序列的方式的資料庫。Oracle的自動增長

       native                         :本地策略,根據底層的資料庫不同,自動選擇使用identity還是sequence。

       uuid                            :隨機字串,適用於字串型別的主鍵。

       assigned                     :Hibernate不維護主鍵,開發人員需要手動設定主鍵。

       總結: 以後如果針對是數值型,選擇用native  如果是varchar型別,可以選擇用uuid     但是也可以不用hibernate維護,自己在程式中手動設定唯一非空(assigned)uuid

 

  3.     Hibernate的持久化類的三種狀態

      Hibernate框架為了更好管理持久化類,將持久化類分成了三種狀態:

         瞬時態     :沒有持久化標識OID,沒有被session操作管理。

              持久態     :有持久化標識OID,已經被session操作管理。持久態物件更改資料會自動更新資料庫。

           脫管態(離線態)       :有持久化標識OID,沒有被session操作管理。

    

  4. Hibernate的一、二級快取

    Hibernate框架本身的效能不是很好,但是Hibernate提供了很多的效能優化的手段,比如,延遲載入 快取

 

        Hibernate框架共提供了兩個級別的快取:

 

        一級快取:稱為Session級別的快取。因為一級快取的生命週期與session一致的。自帶的,不可解除安裝的。(由Session中一系列的Java集合構成的)

             事務提交會對比session的儲存區和快照區,相同則不更新資料庫,不相同則會更新資料庫。 

          二級快取:稱為SessionFactory級別的快取。需要進行配置的快取的外掛。預設不開啟的。 ehche==redis

 

     Ps:   除了刪除,增改查和資料庫打完交道,都會往一級快取中留一份

 

          查詢先去一級快取查,差不到 在去資料庫查 查詢以後還會放到一級快取中一份,但是session只要關閉,一級快取的資料全部清空。