• hibernate的一级缓存问题


    1.证明一级缓存的问题

              

        输出结果:

                   

                   只发出一条查询语句  第二条查询语句没有执行

                     因为第一条查询语句缓存的存在

     2.

                     移除缓存:

                

               

                  输出结果:

                             

     3.一级缓存的快照

                           就是对一级缓存的数据备份

                          保证数据库的数据与 一级缓存的数据必须一致。

                          如果一级缓存修改了,在执行commit提交时,将自动刷新一级缓存,执行update语句,将一级缓存的数据更新到数据库。  

    4.   refresh 刷新

    l  refresh 保证 一级缓存的数据 与 数据库的数据 保持一致。将执行select语句查询数据库,将一级缓存中的数据覆盖掉。只要执行refresh都将执行select语句。

     

    输出结果:

             刷新一次 就会执行一次select语句为了缓存中的数据与数据库中的数据保持一致

    4.1   快照演示(一级缓存刷新)

     

                         问题:一级缓存什么时候刷新?(了解)

                                   默认情况提交(commit())刷新。

    User u = (User) session.get(User.class,"1");
    System.out.println(u);
    //修改持久态对象内容(一级缓存内容)--默认在commit时,将触发update语句。
    u.setUsername("rose1");
    System.out.println(u);

    输出结果:

    Hibernate:
    select
    user0_.id as id0_0_,
    user0_.username as username0_0_,
    user0_.password as password0_0_
    from
    t_user user0_
    where
    user0_.id=?
    User [id=1, username=rose, password=1234]
    User [id=1, username=rose1, password=1234]
    Hibernate:
    update
    t_user
    set
    username=?,
    password=?
    where
    id=?

  • 相关阅读:
    ZK简单操作
    Java 混沌实验执行器 chaosblade-exec-jvm
    数仓分层
    维护大数据系统时遇到的几个问题及解决方案
    hotkey
    C# 构建一个TCP和SerialPort通信的通用类(下)
    C# 构建一个TCP和SerialPort通信的通用类(上)
    Prism框架中的DelagateCommand(下)
    Prism框架中的DelagateCommand(上)
    如何搭建自己的Nuget服务器(上)
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/hibernate_catch.html
Copyright © 2020-2023  润新知