课程咨询 :18487146383

  • 一级缓存的生命周期

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

  • 昆明达内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自己维护的!

上一篇:什么是一级缓存?

下一篇:刷出缓存的时机

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:7月31日

Java--零基础业余班

Java--零基础业余班

开班日期:7月31日

Java--周末提升班

Java--周末提升班

开班日期:7月31日

Java--零基础周末班

Java--零基础周末班

开班日期:7月31日

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:18487146383    全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56