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

 

 

posted @ 2015-11-16 18:02  浮白斋主人  阅读(294)  评论(0编辑  收藏  举报