温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

hibernate的一级缓存

发布时间:2020-06-30 12:03:21 来源:网络 阅读:343 作者:奔跑吧爽爽 栏目:开发技术

Hibernate框架中共有两级缓存. Session级别的缓存是属于一级缓存,SessionFactory级别的缓存是二级缓存.

缓存:将数据库或硬盘中的数据,存入到内存中.当下次使用的时候可以从内存中获得,减少数据库访问次数.(优化)

1.什么是hibernate的一级缓存
在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java 集合构成了 Session 缓存. 只要 Session 实例没有结束生命周期, 存放在它缓存中的对象也不会结束生命周期.

2.一级缓存:生命周期与session一致.

3.程序测试

@Test
    public void test1(){
        Session s = null;
        Transaction tx = null;
        try{
            s = HibernateUtil.getSession();
            tx = s.beginTransaction();
            //发送查询语句,并且把查询出来的实体类对象存入Session的缓存之中。
            实体类 c1 = s.get(实体类.class, 94);
            System.out.println(c1);
            //会先去Session的缓存之中去查找,如果有就直接拿出来用。
            实体类 c2 = s.get(实体类.class, 94);
            System.out.println(c2);
            tx.commit();
        }catch(Exception e){
            tx.rollback();
        }finally{
            s.close();
        }
    }

4.快照机制

    @Test
    public void test2(){
        Session s = null;
        Transaction tx = null;
        try{
            s = HibernateUtil.getSession();
            tx = s.beginTransaction();
            实体类 c1 = s.get(实体类.class, 94);
            System.out.println(c1);//输出客户级别是:VIP客户
            c1.setCustLevel("普通客户");//修改客户的级别是:普通客户
            System.out.println(c1);//输出客户级别:普通客户
            tx.commit();//默认在此时执行快照机制。用缓存和快照进行比较,如果不一致,使用缓存同步数据库中的数据,同时刷新缓存和快照。
        }catch(Exception e){
            tx.rollback();
        }finally{
            s.close();
        }
    }.

hibernate的一级缓存

当执行到 tx.commit(); 默认在此时执行快照机制。用缓存和快照进行比较,如果不一致,使用缓存同步数据库中的数据,同时刷新缓存和快照。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI