Hibernate的实例的三种状态

        结合课上老师讲的以及查资料看书,把相关知识进行了整理。今天开始用笔记把一些知识点和敲的代码段记下来了,果然还是记一下效果好。推荐有道或是为知等笔记软件,很好用。

       如有不足之处,请多多指教。欢迎转载:@CSU-Max

Hibernate的三种状态:
1、瞬时状态
2、持久化状态
3、游离状态

各种状态之间的转换关系:


下面来详细介绍一下各种状态:

瞬时状态:
实例对象通过new关键字开辟内存空间创建Java对象,但是它并没有纳入Hibernate Session的管理。它只是一个携带信息的载体,如果没有变量对它引用,则其将会被JVM回收。
1、处于瞬时状态的对象不在Session的缓存中,不与任何的Session对象相关联。
2、处于瞬时状态的对象在数据库中没有与之相对应的记录。
3、当一个瞬时状态对象被持久化对象引用,它将会自动变为持久化状态对象。

持久化状态:
持久化状态对象存在与数据库中的数据对应,并于Session和Transaction关联,并且相关联的Session没有关闭,Trasaction没有提交。持久化状态对象发生改变时,在Trasaction提交时会影响到数据库。
1、每个持久态对象都于一个Session对象关联
2、 处于持久化状态的对象在数据库中都有与之相对应的记录,并拥有持久化标识(identifier)。

游离状态:
当持久化对象的Session关闭后,这个对象就从持久化对象变为游离态对象。游离态对象仍然存在与数据库数据的关联,只是不在Hibernate的Session管理范围之内。如果将某个处于游离态的对象重新关联某个新的Session,则其将变回持久化对象,如果没有变量对它引用,则其将会被JVM回收。
1、处于游离状态的对象都是由持久化状态对象转化而来。
2、处于游离状态的对象不与任何Session对象关联。
3、处于游离状态的对象在数据库中存在与之相对应的记录(前提是没有其他Session实例删除该条记录)。

简单的代码说明:

public   void  test(){

        User user =  new  User( "admin" , "admin" ) ;          //new创建一个瞬时状态对象
        Session session = HibernateUtil. currentSession ();
        Transaction ts =  null ;
         try {
            ts = session.beginTransaction();
            session.save(user);                         //调用save操作,变为持久化对象
            ts.commit();
        } catch (Exception e){
            ts.rollback();
            System. out .println( "---error---" );
            e.printStackTrace();
        } finally {
            HibernateUtil. closeSession ();               //关闭Session之后,变为游离态对象
        }   
  }





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值