Hibernate 的对象状态

来源:互联网 发布:陈舜臣 知乎 编辑:程序博客网 时间:2024/05/17 17:17

1.瞬时状态(Transient)

瞬时状态是指对象由new 操作符创建,且尚未与hibernate Session关联的对象。即未被Session对象的save和update等方法持久化到数据库中去,并且未被赋予持久化标示的。如果瞬时对象在程序中没有被引用,他将被GC销毁。

如:

Cat cat=new Cat(" 2017-01-01",mother_cat);//mother_cat 是cat的一个Cat类的示例。

Session session=HibernateUtil.getSession();

Transcation tr=session.beginTransaction();

session.save(mother_cat);

tx.commit();

session,close();

此例中的cat对象便是一个瞬时的对象,它虽然被初始化,但并未被Session对象持久化到数据库中,随着其生命周期的结束,该对象所占用的内存将被回收。


2.持久状态(Persistent)

持久状态对象指与数据库表中的某一条记录相对应,已经获取持久化标示的对象,持久化对象有可能是刚刚被保存的(sava方法),或者刚刚被加载的(load方法),无论哪种情况。它任然存在于相关联的Session作用范围内,也就是所Session任然可以对该持久对象(换句话说,是数据库中的表中的某条记录)进行操作。Hibernate会检测处于持久状态的对象的任何改动。在当前的session的操作执行完毕时对象数据与数据库中进行同步。可以直接理解为持久状态的对象为数据库表中记录中的一个快照。他们在session的作用范围保持一致的,而保持一致的操作是由Hibernate完成的,无需开发者手动执行如update操作。

session.save(mother_cat);

此语句就是将瞬时状态的对象转化为持久化状态的对象。

3.脱管状态

脱管状态对象是指在session作用范围之外的持久对象。与持久对象关联的session被关闭之后,对象由持久状态转化为脱管状态,脱管对象可以被继续修改,如果重新关联到某个新的session中的时候,会再次转变为持久对象,同时所有修改将被持久化到数据库。


状态转换图:

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大学毕业一年后找不到工作怎么办 农村乱收垃圾费怎么办 信用卡额度低不想要怎么办 qq公告有敏感词怎么办 qq群公告敏感词怎么办 轿车加了假汽油怎么办? 电信4g变成3g怎么办 电信流量超过40g怎么办 联通卡网络信号很差怎么办 电马桶马达坏了怎么办 我这么好看别人看不到怎么办 户口打回原籍不接受怎么办 小电充电宝丢失怎么办 qq连续聊天断了怎么办 胚胎怀疑在切口处怎么办 3D渲染没有材质怎么办 员工拒绝签收员工手册怎么办 二级密码错了三次怎么办 棉签掉到耳朵里怎么办 发财树叶子有黄斑怎么办 翠兰的颈枯萎了怎么办 翠兰主干软了怎么办 花叶子长白色粘粉末怎么办 水培转土培栀子花叶子蔫了怎么办 水冷空调水不循环怎么办 哺乳期乳房一个大一个小怎么办 我喝酒后喂奶了怎么办 磁盘目录不具有读写权限怎么办 玻纤网格布扎手怎么办 模拟城市5细菌太多怎么办 空气风犁叶子卷怎么办 晚上腿比早上粗怎么办 新疆公安边防改革新兵怎么办 专升本没有考上怎么办 摩托车漏检了2年怎么办 19年北京外地车怎么办 汽车遥控钥匙按键坏了怎么办 长安逸动噪音大怎么办 微信设置密码参数错误怎么办 太阳能电加热不加热怎么办 没报到换了工作怎么办