昆明java培训
达内昆明广州春城路

18487146383

热门课程

什么是一级缓存?

  • 时间:2017-01-11
  • 发布:昆明Java培训
  • 来源:达内新闻

昆明达内Java培训的老师这一期给大家讲什么是一级缓存。

又称为:hibernate一级缓存、session缓存、session一级缓存

缓存的概念:在内存上存储一些数据

缓存的介质是一般是内存(硬盘),用来存放数据,当第一次查询数据库的时候,将数据放入缓存,当第二次继续使用这些数据的时候,就不需要要查询数据库了,直接从缓存获取,

一级缓存概念:

在Session接口中实现了一系列的java集合,这些java集合构成了Session的缓存,只要Session的生命周期没有结束,session中的数据也就不会被清空。

缓存作用:

将数据缓存到内存或者硬盘上,访问这些数据,直接从内存或硬盘加载数据,无需到数据库查询。

好处:快!降低数据库压力。

一级缓存的生命周期:

Session中对象集合(map),在Session创建时,对象集合(map)也就创建,缓存保存了Session对象数据,当Session销毁后,集合(map)销毁,一级缓存释放!

什么对象会被放入一级缓存?

只要是持久态对象,都会保存在一级缓存(与session关联的本质,就是将对象放入了一级缓存)

一级缓存的作用:第一次get/load的时候,肯定会发出sql语句,查询数据库,(此时会将数据放入一级缓存),只要session不关闭,

第二次get/load的时候,直接从缓存中读取数据,不会发出sql语句,查询数据库(这里的数据指的是同一条记录:OID相等)

【示例】证明一级缓存的存在性!

通过多次查询同一个po对象数据,得到同一个对象,且第二次不再从数据库查询,证明一级缓存存在。

@Test

public void testFirstCacheExist(){

/**

*证明一级缓存的存在性

*证明思路:

*缓存的作用就是用来少查数据库的,提高访问速度

*第一步,通过get/load查询数据,由于是第一次查询,所以必然发出sql语句,查询数据库

*第二步,不关闭session,继续使用当前的session去get/load数据,观察是否发出sql语句

*如果不发出,表明是从一级缓存取出的数据

*/

Session session = HibernateUtils.openSession();

session.beginTransaction();

//第一步:此时必然发出sql语句,然后自动将数据放入一级缓存

Customer customer = (Customer) session.get(Customer.class, 1);

System.out.println(customer);

//第二步:此时不会发出sql语句,直接从一级缓存获取数据

Customer customer2 = (Customer) session.get(Customer.class, 1);

System.out.println(customer2);

session.getTransaction().commit();

session.close();

}

了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

上一篇:Hibernate持久化对象的状态
下一篇:一级缓存的生命周期

昆明达内Java培训带你了解机器学习

中美it行业数据大pk

昆明达内java培训的面试问题你都掌握了吗

机器学习领域需要掌握什么

选择城市和中心
贵州省

广西省

海南省