zoukankan      html  css  js  c++  java
  • session 一级缓存相关

    Session 具有一个缓存, 位于缓存中的对象称为持久化对象, 它和数据库中的相关记录对应。
    Session 能够在某些时间点, 按照缓存中对象的变化来执行相关的 SQL 语句, 来同步更新数据库, 这一过程被称为刷新缓存(flush)。
    hibernate把对象分为三种状态;Session 的特定方法能使对象从一个状态转换到另一个状态。
     
    •flush:Session 按照缓存中对象的属性变化来同步更新数据库;
    •默认情况下 Session 在以下时间点刷新缓存:
    –显式调用 Session 的 flush() 方法;
    –当应用程序调用 Transaction 的 commit()方法的时, 该方法先 flush ,然后在向数据库提交事务;
    –当应用程序执行一些查询(HQL, Criteria)操作时,如果缓存中持久化对象的属性已经发生了变化,会先 flush 缓存,以保证查询结果能够反映持久化对象的最新状态
    •flush 缓存的例外情况: 如果对象使用 native 生成器生成 OID, 那么当调用 Session 的 save() 方法保存对象时, 会立即执行向数据库插入该实体的 insert 语句.
    •commit() 和 flush() 方法的区别:flush 执行一系列 sql 语句,但不提交事务;commit 方法先调用flush() 方法,然后提交事务. 意味着提交事务意味着对数据库操作永久保存下来。
  • 相关阅读:
    Django修改数据库时出错 django.db.utils.OperationalError: (1091, "Can't DROP 'content'; check that column/key exists")
    ini配置文件必知
    常用的两个批处理
    windows Path变量优先级
    curl开源库编译
    VS属性页的目录类型
    连通域去噪
    C++调用V8与JS交互
    VS2010,Qt插件安装使用
    utf8转gbk,libcurl中文乱码处理
  • 原文地址:https://www.cnblogs.com/yzdqxing/p/4149999.html
Copyright © 2011-2022 走看看