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=?

  • 相关阅读:
    第一阶段意见评论
    软件工程--第十一周学习进度
    第一阶段SCRUM冲刺 10
    冲刺(三)
    冲刺(二)
    冲刺(一)
    梦断代码阅读笔记01
    第八周总结
    NABCD项目分析
    第七周总结
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/hibernate_catch.html
Copyright © 2011-2022 走看看