声明
Session是一个持久化管理器,对数据库进行操作之前,必须先取得Session实例,相当于JDBC在对资料库操作之前,必须取得Connection实例,Session是Hibernate操作的基础,它不是线程安全的,但是我们可以用ThreadLocal(用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本,这样使每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。)来保证线程的安全性。
状态描述
1.瞬时对象(Transient Object):
使用new操作符初始化的对象不能立刻就持久的。它们的状态时瞬时的,也就是说它们没有任何跟数据库相关联的行为,在数据库中没有与之匹配的记录,还没有让session管理。
总结:
1.没有被session管理
2.在数据库中没有与之匹配的记录
2.持久化对象(Persistent Object):
持久实例是任何具有数据库标识的实例,它有持久化管理器Session统一管理,持久实例是在事务中进行操作的一一它们的状态事务结束时同数据库进行同步。当事务提交时,通过执行SQL的INSERT、UPDATE和DELETE语句把内存中的状态同步到数据库中。
总结:
1. 纳入session管理
2.在数据库中有与之匹配的记录
3.当属性改变,在清理缓存是(脏数据检查)会自动和数据库同步
3.离线对象(Detached Object):
Session关闭之后,持久化对象变成为离线对象。离线表示这个对象不能再与数据库保持同步,它们不能再接受hibernate管理。
总结:
1. 没有被Session管理
2. 在数据中存在与之匹配的记录
图例注解
文字有时候是苍白的,如何更好展现自己的思维,需要我们借助图形的力量,这样我们的思维更加深刻,请看Session三种状态图,让你知道状态是如何进行转化。
(通过一系列的方法,改变Session状态)
三种状态的区分:
1. 有没有ID,(如果没有则是Transient状态)
2. ID在数据库中有没有
3. 在内存里有没有(Session缓存)
总结
想必大家对Session的状态有了一定的了解,那我们就在总结一下,便于我们理解的区别。
Transient对象:随时可能被垃圾回收器回收(在数据库中没有于之对应的记录,应为是new初始化),而执行save()方法后,就变为Persistent对象(持久性对象),没有纳入session的管理。( 内存中一个对象,没有ID,缓存中也没有)
Persistent对象:在数据库有存在的对应的记录,纳入session管理。在清理缓存(脏数据检查)的时候,会和数据库同步。
( 内存中有、缓存中有、数据库有(ID)
Detached对象:也可能被垃圾回收器回收掉(数据库中存在对应的记录,只是没有任何对象引用它是指session引用),注引状态经过Persistent状态,没有纳入session的管理。
(内存有、缓存没有、数据库有(ID)
分享到:
相关推荐
followme(靛蓝)-0.0.1-0 通过在Thu, 02 Jul 2015 05:33:48 -0000运行/usr/bin/bloom-release --rosdistro indigo --track indigo followme ,将followme存储库中的软件包发布到了indigo发行版中。 followme...
圆梦小车FollowMe全集 圆梦小车FollowMe全集圆梦小车FollowMe全集
小车的源码,寻迹小车 FollowMe 项目。
独立微博Follow5:30天内将暂停所有服务运营.docx
$ git clone https://github.com/BrunoEduardoCSantos/Follow-Me.git 安装依赖项 您需要安装Python 3和Jupyter Notebooks才能执行此项目。 如果还没有安装的话,最好的方法是将Anaconda与一起使用。 如果出于某种...
ardrone_followme ROS-stack 来制作一个跟随一个人的 AR.Drone。 使用 AutonomyLab/ardrone_autonomy、ardrone_driver 和 ardrone_joystick。
$ git clone git@github.com:krahman/followme.git 安装 gem $ bundle install --path vendor/bundle 迁移数据库 $ bundle exec rake db:migrate 运行用户对象单元测试 RSpec $ bundle exec rspec spec/models/...
nofollow是链接的HTML标签属性,站长和SEO人员可以通过这个属性来告诉搜索引擎不要追踪此网页上的链接,或不要追踪某个指定的链接, 这些或这个链接并不是本网站所推荐的...链接一旦使用nofollow之后,就不会导出权重了
输入一串数据,利用状态转换图程序求出“关键字,标识符,整数,运算符,实数”。 实验二:DFA扫描 打开一个编写好的源代码,利用DFA扫描程序删除多行注释,单行注释,多余的行,多余的空格。 实验三:first集,...
跟着我 android 项目 - 该应用程序提供跟踪和紧急警报服务。
Program Trolly Follow Me based Arduino
教你如何makefile,gcc编译环境下
follow me to study modern c++
nofollow插件安装教程:一.谷歌浏览器地址栏直接输入chrome://extensions/,打开谷歌扩展程序二.直接将本站提供的nofollow crx文件下载下来拖入窗口安装即可相关图片: 资源太大,传百度网盘了,链接在附件中,有...