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(); }
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(); }
6、session.clear()清除缓存。