zoukankan      html  css  js  c++  java
  • Hibernate 性能优化之一级缓存

     1、一级缓存的生命周期
         一级缓存在session中存放,只要打开session,一级缓存就存在了,当session关闭的时候,一级缓存就不存在了


      2、一级缓存是依赖于谁存在的
          依赖于session存在的


      3、怎么样把数据存放到一级缓存中
          利用session.get、update、save

          * session.save方法
              *    *  可以把一个对象变成持久化状态的对象
              *    *  可以把一个对象放入到一级缓存中

          * session.update方法
             *    *  能把一个对象的状态转化成持久化状态
             *    *  能把一个对象存放到一级缓存中

           * session.get方法
             *     * 通过该方法得到的对象是一个持久化对象
             *     * 通过该方法可以把该对象存放到一级缓存中(session缓存中)


      4、怎么样从一级缓存中获取数据
          利用session.get方法可以获取数据

          
      5、怎么样把缓存中的数据同步到数据库
           只要是一个持久化状态的数据就在一级缓存中
           利用session.flush方法

          * session.flush方法
                 *   *  hibernate内部会去检查session缓存中的所有的对象
                 *   *  如果该对象是持久化对象,并且该对象的ID在数据库中有对应的记录,并且该对象的属性有变化,则会自动发出update语句,如果该对象的属性没有变化,则不发出update语句
                 *   *  检查持久化对象中是否有关联的对象,如果有关联的对象,并且设置了级联操作,这个时候会检查级联对象的id在数据库中有没有对应的记录,如果有,则发出update语句,如果没有,则发出insert语句
                 *   *  如果有维护关系的代码,则还会改变关系
                 *   *  全部检查完成以后,就发出sql语句,把一级缓存中的内容同步到数据库中


      6、怎么样把数据库的数据同步到一级缓存中
          session.reflesh方法   只能同步一个对象


      7、一级缓存的特性
         也叫session级别的缓存
         session中存放私有数据
         可以通过新建session和从当前线程中获取session保证数据的安全性


      8、从一级缓存中清楚某一个对象
         session.evcit方法  并且把一个对象从持久化状态转化成脱管状态


      9、清空一级缓存中所有的数据

      session.clear();

  • 相关阅读:
    DataGridView如何获取某个数据
    扩展方法
    base和this关键字
    装箱和拆箱
    var,object和dynamic
    const和readonly
    react native回调函数刷新页面
    react native打包android,android9.0以上版本http请求不了怎么办?
    react native中android app怎样打包发布
    React Native 实现页面返回监听
  • 原文地址:https://www.cnblogs.com/liuwt365/p/4222418.html
Copyright © 2011-2022 走看看