zoukankan      html  css  js  c++  java
  • 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=?

  • 相关阅读:
    第一次作业
    第0次作业
    第14、15周作业
    第七周作业
    第六周作业
    第四周作业
    第三周作业
    第4次作业
    第3次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/hibernate_catch.html
Copyright © 2011-2022 走看看