zoukankan      html  css  js  c++  java
  • HIbernate学习笔记3 之 缓存和 对象的三种状态

    一、hibernate一级缓存

         *  hibernate创建每个Session对象时,都会给该Session分配一块独立的缓冲区,用于存放Session查询出来的对象,这个分配给session的缓存区也叫session级缓存。session取数据时,会优先向缓存区取数据,如果存在就直接取,不存在就去数据库查询,降低了数据库访问次数。

          * 一级缓冲是默认开启的,查询时会自动使用。每个session是独立的,save、update、delete、操作都会出发缓存更新。

          

         

    二、缓存的管理

          * session.evict(obj) :将obj从一级缓存中移除。

          * session.clear()    :清楚一级缓存中所有的 obj 。

          * session.close()    :关闭session,释放缓存空间。

          

    三、对象的3中状态

           *在hibernate中,可以把实体对象看成有3中状态,分别是临时态、持久态、游离态。

           * 3中状态的转换如下图:

           

           1.临时态:可以被GC回收,未与session关联。

               * 通过new创建的对象为临时态

               * 通过delete方法操作的对象将变为临时态

          2.持久态: 与session想关联,也存在于session缓存中,调用session.flush()时执行。事务                      提交是会默认自动调用session.flush();

                  * 通过get、load、list、iterate方法查询的对象为持久态

                  * 通过save、update方法操作的对象转变为持久态

                  

            3.游离态: 可以被GC回收,游离的对象进行过持久化,但是已经和session解除了关联。

  • 相关阅读:
    Commonjs规范 浏览器运行
    node Commonjs规范
    Node 支持ES6 modules
    node only 对象属性白名单
    babel 关键配置
    Linux测试硬盘读性能的常用工具-hdparm
    linux下/etc/profile、/etc/bashrc、~/.bashrc 和~/.bash_profile文件的区别
    storcli64和smartctl定位硬盘的故障信息
    数据库迁移的几种方式
    linux中截取字段与#、$区别
  • 原文地址:https://www.cnblogs.com/GotoJava/p/6715183.html
Copyright © 2011-2022 走看看