分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

hibernate对象的三种状态及转换

发布时间:2023-09-06 01:09责任编辑:熊小新关键词:暂无标签

hibernate对象的三种状态转换关系图

        

三种状态

瞬时状态(transient):

  通过new创建对象后,对象并没有立刻持久化,  它并未参与数据库中的数据有任何的关联,此时java对象的状态为瞬时状态。session对瞬时状态的对象一无所知,当对象不再被引用时,她的数据也就丢失了, 对象将会被java虚拟机按照垃圾回收机制处理。

持久状态(persistent):

  当对象与session关联,被session管理时,它就处于持久化状态。处于持久状态的对象拥有数据库的标志。对象什么时候与session建立联系的?

         (1)通过session查询的接口,或者get,或者load方法从数据库中加载对象的时候

         (2)瞬时状态的对象,通过调用save或者saveorupdate方法时处于持久状态的对象,session会持续跟踪和管理他们,如果对象的内部状态发生了任何更改,hibernate会选择合适的时机(如事务提交时)将变更固化到数据库中。              

 游离状态(Detached):

     处于持久状态的对象,脱离与其session 的管理后,对象就处于游离状态。  执行session的evict,clear,close()方法后,可以将持久状态变为游离状态

  session提供了两个方法(update,merge)将处于游离状态的对象,与一个新的session关联,此时对象的状态就重新变回持久状态。

状态转换:

1.瞬时状态转换为持久状态

   使用session的save()或者saveorupdate()方法保存对象后,变为持久状态

     使用session对象的get或者load方法获取对象,,该对象的状态是持久状态。

 2.持久状态转为瞬时状态

      执行session的delete()后,变为瞬时状态 

 3.持久状态转换为游离状态

   执行了session的evict(),clear()或者close()方法后

   

4.游离状态转为持久状态

    重新获取session对象,执行session对象的update或者saveorupdate()后,变为持久状态

  

5.游离状态转为瞬时状态

   执行session的delete()后,对象有游离状态转为瞬时状态。

 

状态前后发生变化的对象称为脏对象

脏检查: 提交事务的时候,hibernate会对session中持久状态的对象检查,看数据是否发生了变化

目的: 保证内存中的数据对象和数据库表的数据一致

刷新缓存机制:

  1.执行事务的commit方法的时候,可以刷新缓存

  2. 执行session.flush()方法

 

hibernate对象的三种状态及转换

原文地址:http://www.cnblogs.com/wuxinyiwu/p/7488868.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved