三、Hibernate進階

來源:互聯網
上載者:User

標籤:c   class   a   int   檔案   使用   

1、Query查詢方式
  SQL,HQL,OID,QBC(query by criteria)
2、二級緩衝
  sessionFactory緩衝,也叫進程級的緩衝,使用第3方外掛程式實現的,只緩衝實體,生命週期和sessionFactory一致
  使用環境:
    經常被訪問
    改動不大
    數量有限
    不是很重要的資料,允許出現偶爾並發的資料
  使用方法:(一般用EHCache)
    匯入jar包
    在hibernate.cfg.xml檔案中
      設定使用二級緩衝<property name="cache.use_second_level_cache">true</property>
      指定緩衝策略ehcache
        <property name="hibernate.cache.provider_class">
          org.hibernate.cache.EhCacheProvider
        </property>
    配置ehcache.xml,定製緩衝策略,共需指定5個屬性
    選擇哪個對象使用二級緩衝機制
      在該對象的設定檔*.hbm.xml檔案中配置如何使用二級緩衝機制:<cache usage="read-only" region="sampleCache1"/>
        首先,通過region屬性指定要使用的二級緩衝;
        其次,通過usage屬性指定使用二級緩衝的方式
3、查詢快取
  概述:對普通屬性進行緩衝。如果關聯的表發生了修改,那麼查詢快取的生命週期也結束了
  使用環境:
    適用於查詢結果資料量巨大,查詢結果一般不輕易改變的查詢(例如商品資訊)
  使用方法:
    在hibernate.cfg.xml檔案中加入<property name="hibernate.cache.use_query_cache">ture</property>
    在程式中必須手動啟用查詢快取:query.setCacheable(true);
4、鎖機制
  悲觀鎖+樂觀鎖
  悲觀鎖:當線程的事務沒有結束前,其他事務都要等著
  樂觀鎖:誰在前,誰先操作
  實現原理:為資料庫表增加一個欄位version,當使用者讀取資料時,會將版本號碼version一同讀出,
    如果該使用者修改了資料,會先將讀取的版本號碼與資料庫中的版本號碼做比對,
    如果相同,才進行修改,修改完成後,會將版本號碼version+1
    如果不相同,則不能修改,會拋出異常
  使用方法:
    對象增加version屬性
    對應檔*.hbm.xml的class節點增加屬性optimistic-lock="lock"
      增加節點<version name="version" type="integer" column="t_version"/>必須放在id後

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.