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()清除缓存。

  • 相关阅读:
    有关HL7 的C# 源码
    EF中调整字段的顺序
    xml schema 中如何定义类似Map的结构
    js将时间转换为时间戳
    postman使用
    H5拖拽
    读取XML文件中获取特定值
    读取XML文件
    owin使用
    C#跨线程访问
  • 原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/session.html
Copyright © 2011-2022 走看看