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)优点:

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

  • 相关阅读:
    prometheus监控zookeeper
    prometheus监控mongo
    python游戏练手--乒乓球
    python游戏练手--贪吃蛇
    python爬虫练手--糗事百科图片获取
    Prometheus监控安装及使用(一)
    善用k8s explain
    k8s deployment
    k8s pod
    k8s deployment 金丝雀发布 更新的 暂停 恢复 回滚
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11826637.html
Copyright © 2011-2022 走看看