博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HIbernate学习笔记3 之 缓存和 对象的三种状态
阅读量:7056 次
发布时间:2019-06-28

本文共 735 字,大约阅读时间需要 2 分钟。

一、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解除了关联。

 

转载于:https://www.cnblogs.com/GotoJava/p/6715183.html

你可能感兴趣的文章
idea 启动 web项目 报错 Error running 'Unnamed': Address localhost:1099 is already in use
查看>>
洛谷P2634 聪明可可
查看>>
mysql 表名自动补全
查看>>
Java - 处理某些图片泛红
查看>>
centos7下搭建solr服务器
查看>>
为什么要用lock 【readonly】object?为什么不要lock(this)?
查看>>
该怎样从零开始学习.NET(转)
查看>>
Git fetch和git pull的区别
查看>>
jQuery委托
查看>>
python 学习源码练习(1)
查看>>
python和前端(三)JS的激情
查看>>
web.xml详解
查看>>
kernel相关前沿技术了解
查看>>
asp.net 运行时, 报控件不存在
查看>>
oracle ora-01002
查看>>
Bzoj 2006: [NOI2010]超级钢琴 堆,ST表
查看>>
使用 Code Snippet 简化 Coding
查看>>
myEclipse新建jsp,默认编码
查看>>
Linux设备驱动剖析之Input(一)
查看>>
eval转json
查看>>