• hibernate中的session缓存


    1、什么是session缓存?

    在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java 集合构成了 Session 缓存. 只要 Session 实例没有结束生命周期, 且没有清理缓存,则存放在它缓存中的对象也不会结束生命周期

    2、session缓存有什么用?
    Session 缓存可减少 Hibernate 应用程序访问数据库的频率。
    3、例子,只会查询一次数据库
    @Test
        public void query() {
            // 1、创建SessionFactory对象
            SessionFactory sessionFactory = SessionFactoryUtil.getSessionFactory();
    
            // 2、创建session
            Session session = sessionFactory.openSession();
    
            session.get(User.class, 1);
            session.get(User.class, 1);
    
            // 3、关闭session
            session.close();
    
        }
    View Code

    4、session中的flush()方法

    Session 能够在某些时间点, 按照缓存中对象的变化来执行相关的 SQL 语句, 来同步更新数据库, 这一过程被称为刷新缓存(flush

    1)在事务的commit()方法中,会先调用session的flush()方法,再提交事务。

    2)flush()方法,可能会发送sql语句,但不会提交事务。

    3)未提交事务或显示的调用flush方法之前也有可能调用flush()方法

      执行hql和qbc查询

        id由数据库生成,调用 save方法时。

    5、session的refresh方法,会再次向数据库发送查询。

    @Test
        public void query() {
            // 1、创建SessionFactory对象
            SessionFactory sessionFactory = SessionFactoryUtil.getSessionFactory();
    
            // 2、创建session
            Session session = sessionFactory.openSession();
    
            User user = (User)session.get(User.class, 1);
            System.out.println(user);
            session.refresh(user);
            System.out.println(user);
            // 3、关闭session
            session.close();
    
        }
    View Code

    6、session.clear()清除缓存。

  • 相关阅读:
    spring
    Hibernate中一级缓存和二级缓存使用详解
    myeclipse 配置weblogic
    小程序animation动画效果综合应用案例(交流QQ群:604788754)
    PHP:第二章——PHP中的equire与incude语句
    PHP:第二章——PHP中的break一continue一return语句
    PHP:第二章——PHP中的for语句
    PHP:第二章——PHP中的while语句
    PHP:第二章——PHP中的流程控制语句
    小程序animation动画效果(小程序组件案例)
  • 原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/session.html
Copyright © 2020-2023  润新知