<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-124  評論-49  文章-56  trackbacks-0
    一級緩存

      * 一級緩存是緩存實體對象的
      * 如果管理一級緩存
        一級緩存無法取消,但可以管理clear(),evict()
      * 一級緩存和session的生命周期一致,一級緩存也叫session級的緩存或事務級緩存
      * 如何避免一次性大量的實體數據入庫導至內存溢出
        先flush,再clear
      * 如何管理一級緩存
        load,get,iterate,save都支持一級緩存
    如果數據量特別大,考慮采用jdbc實現,如查jdbc也不能滿足要求可以考慮采用數據本身的特定導入工具
    Student student=(Student)session.load(Student.class,1);
    System.out.println(
    "studnet.name="+student.getName());
    //不會發出sql,因為load使用緩存
    Student student=(Student)session.load(Student.class,1);
    System.out.println(
    "studnet.name="+student.getName());

    二級緩存

      * 二級緩存是緩存實體對象的,普通屬性不會緩存
      * 二級緩存是進程級的緩存,也稱為SessionFactory級的緩存,可以被所有的session共享
        二級緩存的生命周期和SessionFactory是一致的,可以用SessionFactory管理二級緩存
      * 二級緩存的配置和使用
        1 加入ehcache的jar包;
        2 拷貝ehcache.xml文件到src目錄下;
        3 開啟二級緩存,默認是打開的。配置hibernate.cfg.xml
        hibernate.cfg.xml文件
        開啟二級緩存
    <property name="hibernate.cache.use_second_level_cache">true</property>
        指定緩存產品提供商
    <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
        4 指定那些對象使用二級緩存(兩種方運河)
          * 在映射文件中采用<cache>標簽
     
    <class name="com.my.hibernate.User" table="t_user">
            
    <cache usage="read-only"/>
         
    <id name="id">
          
    <generator class="native"/>
         
    </id>
         
    <property name="name"/>
         
    <many-to-one name="group" column="groupid" cascade="save-update"/>
        
    </class>
        * 在hibernate.cfg.xml文件中,采用<class-cache/>標簽
    <class-cache class="com.bjsxt.hibernate.Studnet" usage="read-only"/>

    管理二級緩存

    factory.evict(Student.class);
    factory.evict(Student.class,1);

    一級緩存和二級緩存的交互問題
       1 不設置(默認)會寫入二級緩存,也會讀出
       2 GET只讀而不寫入二級緩存

       session.setCacheMode(CacheMode.GET);
       Student student
    =(Student)session.load(Student.class,1);

       3 PUT只寫入二級緩存頁不讀取

       session.setCacheMode(CacheMode.PUT);
       Student student
    =(Student)session.load(Student.class,1);


    查詢緩存

    查詢緩存是針對普通屬性結果集的緩存
    對實體對象的結果只緩存id

    查詢緩存的生命周期,當前關聯的表發生修改,那么查詢緩存生命周期結束

    查詢緩存的配置和使用
    1 起用查詢緩存
      * 配置hibernate.cfg.xml文件

    <property name="hibernate.cache.use_second_level_cache">true</property>

      * 在程序中顯式起用

    query.setCacheable(true);

    2 Session和查詢緩存生命周期沒有關系
    3 查詢緩存對query.iterate()不起作用,只用對query.list()起作用

    posted on 2009-11-03 16:49 junly 閱讀(336) 評論(0)  編輯  收藏 所屬分類: hibernate/orm
    主站蜘蛛池模板: 四虎免费久久影院| 欧亚精品一区三区免费| 亚洲成A人片77777国产| 国产AV无码专区亚洲AV麻豆丫| 午夜老司机免费视频| 亚洲日韩精品无码AV海量| 大地资源在线观看免费高清| 亚洲综合色丁香婷婷六月图片| 四虎国产精品免费久久| 亚洲中文字幕乱码AV波多JI| 女人18毛片特级一级免费视频| 亚洲AV性色在线观看| 亚洲精品成人在线| 好男人资源在线WWW免费| 亚洲国产三级在线观看| 中文无码成人免费视频在线观看 | 国产成人综合亚洲亚洲国产第一页| 国产精品美女久久久免费| 伊人久久精品亚洲午夜| 久久久久国色av免费看| 国产成人精品日本亚洲专区6| 好爽好紧好大的免费视频国产 | 国产又大又黑又粗免费视频 | 久久aⅴ免费观看| 亚洲欧洲日产国产最新| 日韩精品视频免费网址| 中文字幕高清免费不卡视频| 亚洲成年轻人电影网站www| 野花高清在线观看免费完整版中文 | 亚洲一区二区三区四区在线观看| 亚洲综合免费视频| 国产天堂亚洲国产碰碰| 亚洲欧洲国产精品香蕉网| 免费观看黄色的网站| 美女裸体无遮挡免费视频网站| 亚洲国产精品成人精品无码区在线| 午夜国产精品免费观看| 一区二区视频免费观看| 亚洲乱码卡三乱码新区| 亚洲一区精品伊人久久伊人| 成人免费在线看片|