• Hibernate(一级缓存、快照)


    缓存(cache),原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。——百度百科

    在Hibernate中引入缓存的目的是提高操作数据库的目的。

    1、Hibernate的一级缓存

    (1)Hibernate的一级缓存:

     public static void testSel() {
                Session session = HibernateUtils.openSession();
                Transaction transaction = session.beginTransaction();
                Student student=new Student();//瞬时态
                Student student1=session.get(Student.class,937221508);
                Student student2=session.get(Student.class,937221508);
                Student student3=session.get(Student.class,937221508);
                transaction.commit();
                session.close();//游离状态
            }

     从运行结果可以看出Hibernate只执行了一次查询操作,因为在执行Student student1=session.get(Student.class,937221508);语句的时候会先查询一级缓存,因为一级缓存中没有需要查询的数据,因此才会执行Select操作,当第二次执行Student student2=session.get(Student.class,937221508);的时候,因为一级缓存中有相同的数据(查询相同主键的数据),会直接返回查询结果,不会再执行Select操作。

    (2)好处:

    Hibernate的一级缓存减少了对数据库的访问,提高了查询效率。

    2、Hibernate快照

    (1)Hibernate快照

    public static void testSel() {
                Session session = HibernateUtils.openSession();
                Transaction transaction = session.beginTransaction();
                Student student=new Student();//瞬时态
                Student student1=session.get(Student.class,937221508);
                student1.setSname("张可可");
                student1.setSname("李明");
                student1.setSname("平靖");
                transaction.commit();
                session.close();//游离状态
            }

    执行以上代码:即将学生的名字修改三次,其实和学生名字的初始值相同。

     按照一般的想法,需要执行一次Select操作和三次Update操作,但是事实上只执行了一次Select语句。因为Hibernate将get方法获得的对象组装成了两个对象,一个放入缓存一个放入快照,程序修改的是缓存中的对象,然后hibernate比对比对缓存中的对象和快照,如果有差异则同步到数据库中,否则,不进行同步。

    (2)优点:

    减少不必要的修改语句的发送

  • 相关阅读:
    CCF CSP 201509-1 数列分段
    CCF CSP 201503-1 图像旋转 (降维)
    CCF CSP 201412-1 门禁系统
    CCF CSP 201409-1 相邻数对
    CCF CSP 201403-1 相反数
    CCF CSP 201312-1 出现次数最多的数
    Win10环境下 HTTP 错误 500.19
    牛客网 整数拆分 (动态规划)
    牛客网 放苹果
    LeetCode9 回文数
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11826637.html
Copyright © 2020-2023  润新知