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

hibernate中的session缓存的更多相关文章

  1. Hibernate中的Session缓存问题

    1. Session 缓存: 1) . 在 Session 接口的实现中包括一系列的 Java 集合 , 这些 Java 集合构成了 Session 缓存 .          它用于存放 Sessi ...

  2. Hibernate中延迟加载和缓存

    什么是延迟加载? 延迟加载是指当应用程序想要从数据库获取对象时(在没有设置lazy属性值为false),Hibernate只是从数据库获取符合条件的对象的OId从而生成代理对象,并没有加载出对象 访问 ...

  3. 第四讲 :hibernate中的session

    hibernate中的session中可以进行增删改差,通过工具类可以得到相关的工具类. 方法概要:  Transaction beginTransaction()开始一个工作单元,得到关联的事务对象 ...

  4. 在Spring、Hibernate中使用Ehcache缓存(2)

    这里将介绍在Hibernate中使用查询缓存.一级缓存.二级缓存,整合Spring在HibernateTemplate中使用查询缓存.,这里是hibernate3,使用hibernate4类似,不过不 ...

  5. hibernate 中的session和事务(Transaction)

    在使用hibernate开发时,遇到最多的就是session与事务,那么他们两个有什么关系呢?下面我来抛砖引玉: 1.session是hibernate中的以及缓存机制,是用来对数据进行增删改查的一个 ...

  6. 关于hibernate中的session与数据库连接关系以及getCurrentSession 与 openSession() 的区别

    1.session与connection,是多对一关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用.   2.多个sessi ...

  7. Hibernate-ORM:16.Hibernate中的二级缓存Ehcache的配置

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述Hibernate中的二级缓存的配置,作者将使用的是ehcache缓存 一,目录 1.二级缓存的具 ...

  8. 具体解释Hibernate中的二级缓存

    1.前言 这篇博客再前几篇博客的基础上来解说一下.Hibernate中的二级缓存.二级缓存是属于SessionFactory级别的缓存机制. 第一级别的缓存是Session级别的缓存,是属于事务范围的 ...

  9. Hibernate中的Session

    我们之前也经常使用Session,通过连接服务器将需要保存的值存到服务器的session中,这是之前关于session的简单应用.现在看到Hibernate框架中也有关于Session的定义,该定义是 ...

随机推荐

  1. 编写高质量代码改善C#程序的157个建议[正确操作字符串、使用默认转型方法、却别对待强制转换与as和is]

    前言 本文主要来学习记录前三个建议. 建议1.正确操作字符串 建议2.使用默认转型方法 建议3.区别对待强制转换与as和is 其中有很多需要理解的东西,有些地方可能理解的不太到位,还望指正. 建议1. ...

  2. 第五章:javascript:队列

    队列是一种列表,不同的是队列只能在末尾插入元素,在队首删除元素.队列用于存储按顺序排列的数据.先进先出.这点和栈不一样,在栈中,最后入栈的元素反被优先处理.可以将队列想象成银行排队办理业务的人,排队在 ...

  3. Jquery-EasyUI学习~

    为了回顾,简单记录下EasyUI如何使用: 先来张效果图: 这张图是从后台获取数据,然后进行展示的. 我这里利用的是EF-MVC. 先说下View视图里面的HTML代码是如何写的: @{ ViewBa ...

  4. GCD 深入理解:第二部分

    在本系列的第一部分中,你已经学到超过你想像的关于并发.线程以及GCD 如何工作的知识.通过在初始化时利用 dispatch_once,你创建了一个线程安全的 PhotoManager 单例,而且你通过 ...

  5. [转]Oracle中存储过程和函数的区别

    原文地址:http://blog.csdn.net/tender001/article/details/8066203 存储过程和函数: 例子: //创建过程 create or replace pr ...

  6. OC基础--分类(category) 和 协议(protocol)

    OC 中的category分类文件相当于 C#中的部分类:OC 中的protocol协议文件(本质是头文件)相当于 C#中的接口.今天就简单说明一下OC中的这两个文件. 由于视频中的Xcode版本低, ...

  7. Java-Vector

    package 集合类.list类; import java.util.Vector; public class Vector类 { public static void main(String[] ...

  8. 最大ASCII的和问题

    问题:One day when you are going to clear all your browsing history, you come up with an idea: You want ...

  9. SpringMVC数据库链接池,以及其他相关配置

    1.applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...

  10. Bzoj2440 完全平方数

    Time Limit: 10000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Description 小 X 自幼就很 ...