zoukankan      html  css  js  c++  java
  • 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)优点:

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

  • 相关阅读:
    从头到尾彻底理解KMP
    [CF1220E] Tourism
    [CF446C] DZY Loves Fibonacci Numbers
    [CF1003E] Tree Constructing
    [CF1238E] Keyboard Purchase
    [CF915E] Physical Education Lessons
    [CF788B] Weird journey
    [CF1371E2] Asterism (Hard Version)
    [CF780E] Underground Lab
    [CF372C] Watching Fireworks is Fun
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11826637.html
Copyright © 2011-2022 走看看