hibernate中对象的3种状态----瞬时态、持久态、脱管态

转载: http://www.blogjava.net/amigoxie/archive/2007/02/11/99342.html


Hibernate的对象有3种状态,分别为:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。
  
      


瞬时态
        由new命令开辟内存空间的java对象,
       eg. Person person = new Person("amigo", "女");


        如果没有变量对该对象进行引用,它将被java虚拟机回收。


        瞬时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系,在Hibernate中,可通过session的save()或saveOrUpdate()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转变成持久化对象。


       



持久态
        处于该状态的对象在数据库中具有对应的记录,并拥有一个持久化标识。如果是用hibernate的delete()方法,对应的持久对象就变成瞬时对象,因数据库中的对应数据已被删除,该对象不再与数据库的记录关联。


       当一个session执行close()或clear()、evict()之后,持久对象变成脱管对象,此时持久对象会变成脱管对象,此时该对象虽然具有数据库识别值,但它已不在HIbernate持久层的管理之下。


       持久对象具有如下特点:
       1. 和session实例关联;
       2. 在数据库中有与之关联的记录。


 



脱管态
        当与某持久对象关联的session被关闭后,该持久对象转变为脱管对象。当脱管对象被重新关联到session上时,并再次转变成持久对象。


       脱管对象拥有数据库的识别值,可通过update()、saveOrUpdate()等方法,转变成持久对象。


       脱管对象具有如下特点:
       1.  本质上与瞬时对象相同,在没有任何变量引用它时,JVM会在适当的时候将它回收;
       2.  比瞬时对象多了一个数据库记录标识值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 根据类名示例化类_Java LocalDateTime类| ofInstant()方法与示例

java 根据类名示例化类LocalDateTime类的Instant()方法 (LocalDateTime Class ofInstant() method) ofInstant() method is available in java.time package. ofInstant()方法在java.time包中可用。 ofInstant() method is used to create an instance of LocalDateTime from t…

附录:更多字符串操作命令

键值对过期操作 a.添加键值对并设置过期时间 语法:set key value [expiration EX seconds|PX milliseconds] [NX|XX] 示例: 127.0.0.1:6379> set k1 val1 ex 1000 OK设置键值对 k1=val1,过期时间为 1000 秒。 查询键的过期时间可以使用 ttl key,如下代码所示: 127.…

ACM - 第6章 数据结构基础(2)

6.4.2 走迷宫 利用bfs寻找最短路。通过对u/m得到x&#xff0c;u%m得到y。u x * m y 将方向保存在dx[], dy[]中。 cint q[maxn*maxn]; void bfs(int x, int y) {int front 0, rear 0, d, u;u x*m y;vis[x][y] 1; fa[x][y] u; dist[x][y] 0;q[rear] u;while(front <…

springboot工程的热部署

springboot工程的热部署&#xff08;1&#xff09;第一步配置pom.xml&#xff08;2&#xff09;第二步更改IDEA设置什么是热部署配置呢&#xff1f; 我们在开发中反复修改类、页面等资源&#xff0c;每次修改后都是需要重新启动才生效&#xff0c;这样每次启动都很麻烦&#xf…

java 简单的加法 递归 从A加到B

public class Main {// 设置保存和的变量static int sum 0;public static void main(String[] args) {int begin 1, end 10;// 调用方法一 sum 0;sum add(begin, end);System.out.println(">>> 从 " begin " 开始加到 " end " 的结…

Java LocalDateTime类| 带示例的compareTo()方法

LocalDateTime类compareTo()方法 (LocalDateTime Class compareTo() method) compareTo() method is available in java.time package. compareTo()方法在java.time包中可用。 compareTo() method is used to compare this date-time object to the given date-time object. co…

附录:更多集合操作命令

移除并返回集合中的一个随机元素 语法:spop key [count] 示例: 127.0.0.1:6379> smembers myset 1) "v1" 2) "v2" 127.0.0.1:6379> spop myset 1 1) "v2" 127.0.0.1:6379> smembers myset 1) "v1"随机返回集合中指定数量…

第一二章(PTA复习)

第一二章因为3默认是整形&#xff0c;整形长度大于short型&#xff0c;如果让short型 short型 int型&#xff0c;可能会溢出&#xff0c;所以编译报错 例如&#xff1a; 答案&#xff1a;D switch 语句中的变量类型可以是&#xff1a; byte、short、int 或者 char。从 Java …

附录:更多列表操作命令

在某值之前/之后添加某个元素 语法&#xff1a;linsert key before|after pivot value 示例&#xff1a; 127.0.0.1:6379> linsert list3 before b A (integer) 4 127.0.0.1:6379> lrange list3 0 -1 "a" "A" "b" "c"根据下标…

code craft_Craft.io调度中使用的重要术语

code craft1) Arrival Time (AT) 1)到达时间(AT) The time when the process arrives into the running state is called as the Arrival time of the process. In simple words, the time at which any process enter the CPU is known as the arrival time. 流程到达运行状态…

英语笔记:写作:Free admissionsto museums

Free admissionsto museums 免费开放博物馆 Recently, more and more museums areopen to the public free of charge so that they can attract more visitors. However,it has also brought some unexpected problems. Should we carry on the practice? People’sviews va…

ExtJS和AngularJS比较

原文地址&#xff1a;http://www.techferry.com/articles/ExtJS-vs-AngularJS.html ExtJS和AngularJS比较.pdf转载于:https://www.cnblogs.com/animal/p/4267109.html

异常类型及处理

异常类型及处理检查型异常与非检查型异常&#xff1a; 非检查型异常是指机器运行之前永远都不能自动检测出来的异常&#xff0c;例如idea不会报红的但有可能发生异常的代码。error类和RunTime类及其子类 异常类型及处理 finally使用

c ++查找字符串_C ++朋友功能| 查找输出程序| 套装2

c 查找字符串Program 1: 程序1&#xff1a; #include <iostream>using namespace std;class Sample1 {int A, B;friend class Sample2;};class Sample2 {int X, Y;public:Sample2(){X 5;Y 5;}void fun(){Sample1 S;S.A 10 * X;S.B 20 * Y;cout << S.A <<…

英语笔记:词组句子:0806

Aim at doing Aim to 动词原形 Vary from … to … 因……而已 Range from … to … 在……范围内波动、变化 In prospect 即将可能发生的 In place 在正确位置&#xff1b;准备妥当 In favor of 支持&#xff0c;赞同 People in control 学校的主管人员 Keep in to…

附录:更多有序集合操作命令

查询有序集合的总个数 语法:zcard key 示例: 127.0.0.1:6379> zcard zset1 (integer) 4查询 score 区间内的元素个数 语法:zcount key min max 示例: 127.0.0.1:6379> zcount zset1 0 10 (integer) 4累加元素的 score 值 语法:zincrby key increment member 示…

侧边菜单栏 android-menudrawer

这是github上的一款开源项目&#xff0c;类似于人人网可滑动的侧边菜单栏-----android-menudrawer。使用方法也很简单。1.将下载的包解压放入你的工作目录下2.利用Eclipse通过new-->project...->Android Project from Existing Code&#xff0c;找到项目目录&#xff0c;…

软件工程质量管理体系要求_软件质量管理| 软件工程

软件工程质量管理体系要求软件质量管理体系 (Software quality management system) A quality management system frequently mentioned as a standard system is a principal scheme used by organizations to ensure that the products they develop have the desired qualit…

英语笔记:写作:Recreational activities

Recreational activities 娱乐活动 Nowadays, in an era of information and technology, abundant recreational activities areavailable for people to release their stain and stress, ranging from sports tosurfing the internet. There is a hot debate going on argu…

Redis 如何实现限流功能?

“限流”这种事在生活中很常见,比如逢年过节时景点的限流,还有工作日的车辆单双号限流等,有人可能会问为什么要限流?我既然买了车子你还不让我上路开?还有我倒景点买了门票,景点不是能赚更多的钱吗?为什么要限流呢? 其实限流的主要目的就是为了保证整个系统的正常运行…