• Hibernate session缓存


    一级缓存(执行代码时查看console台上的sql语句)

     清空缓存

    @Test
    public void demo03(){
    //清空缓存
    Session session=factory.openSession();
    session.beginTransaction();

    //1.查询
    User user = (User)session.get(User.class, 1);
    System.out.println(user);

    //session.evitc(user) //将执行对象从一级缓存移除
    //session.clear(); //将一级缓存所有内容清空
    //session.close(); //关闭session,之后不能操作,否则将抛异常。如果session关闭,一级缓存销毁了,不能与另一个session共享数据
    //2.再查询--默认情况从一级缓存获得内容
    User user1 = (User)session.get(User.class, 1);
    System.out.println(user1);

    session.getTransaction().commit();
    session.close();
    }

        快照

    快照:一级缓存中同样数据的一个备份,通过api不能直接操作,hibernate自己维护。用于将一级缓存中的数据与数据库 保持一致

    刷出缓存:表示一级缓存与快照进行对比。

         修改刷出缓存时机:flushModel来进行设置。

    1.get查询,结果存放一级缓存

    2.修改内容。user.setUsername("jack");//数据不一致

    3.1 当执行Query进行查询时,将先执行update语句,及查询到最新。

    3.2 transaction.commit():执行提交时去刷新

    3.3 session.flush() 手动的将缓存刷新

      API

    save.将瞬时对象  缓存 持久态对象

         主键生成策略 native:当执行save方法,将触发insert,让数据生成OID,当commit之后数据进入数据库

         主键生成策略 assigned:必须手动的设置OID,然后执行save,当提交时触发insert

    update:将脱管 转换 持久

        通过OID更新数据库

        

  • 相关阅读:
    软件测试之魂:核心测试设计精解
    测试的第一重境界:围着Bug转
    理想运算放大器的性质
    MATLAB脚本显示滤波器系数
    matlab中用转义符来输入希腊字母的方法
    Linux中Matlab安装总结
    在ubuntu下阅读chm文件的四种方法(转)
    ARM是不是单片机
    日本人的英文名字
    WAV格式音乐
  • 原文地址:https://www.cnblogs.com/MisterLiu/p/6938810.html
Copyright © 2020-2023  润新知