zoukankan      html  css  js  c++  java
  • 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()清除缓存。

  • 相关阅读:
    个人号微信机器人接口
    js tree 根据子节点找到所有父节点
    大数据分析之纳税人画像-实现和优化思路
    前后端分离项目安全漏洞修复总结
    多租户&多账户&多公众号_saas微信公众平台设计思路
    java7 try-with-resources 很香
    java7 异常处理增强
    java7 try-with-resources 很香
    mysql 按分数段,每个专业分数段统计人数
    一文看懂奈奎斯特定理和香农定理
  • 原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/session.html
Copyright © 2011-2022 走看看