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

18487146383

热门课程

一级缓存的生命周期

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

昆明达内Java培训的小编这一期给大家讲一级缓存的生命周期就是session的生命周期,不能跨Session,可以说,一级缓存和session共存亡!

【示例】

使用两个不同Session来测试生命周期。(一级缓存和session共存亡)

@Test

public void testFirstCachelifecycle(){

/**

*一级缓存的声明周期:与session同生命共存亡

*如何证明一级缓存的生命周期?

*只要证明数据不能跨session

* 1获取session1,通过session1拿到customer对象,此时必然发出sql语句,关闭session1

* 2获取session2,通过session2继续抓取customer对象,观察第二次是否发出sql语句

*如果发出,,表名session1销毁的时候,把数据也销毁了

*/

Session session1 = HibernateUtils.openSession();

session1.beginTransaction();

//此时必然发出sql语句,因为是第一次查询

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

System.out.println(customer);

//       此处如果需要查询Customer,会发sql语句吗?答:不会,直接走一级缓存

//也能证明数据成功存入了一级缓存

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

System.out.println(customer2);

session1.getTransaction().commit();

session1.close();

/**********第二次*********/

Session session2 = HibernateUtils.openSession();

session2.beginTransaction();

//此时发sql语句吗?答:发,因为session1中的数据跟随session1一起销毁了

Customer customer3 = (Customer)session2.get(Customer.class, 1);

System.out.println(customer3);

session2.getTransaction().commit();

session2.close();

}

小结:缓存的作用,可以提高性能,减少数据库查询的频率。

[补充:原则]所有通过hibernate操作(session操作)的对象都经过一级缓存。

一级缓存是无法关闭的!内置的!hibernate自己维护的!

上一篇:什么是一级缓存?
下一篇:刷出缓存的时机

Effective java的创建和销毁对象

昆明达内Java培训学费多少?

LinkedIn服务:三人行,必有我师【达内java培训】

Java培训:7月排行榜Go创新高Java稳第一

选择城市和中心
贵州省

广西省

海南省

台湾