Hibernate框架中对象的三种状态

一、三种状态简介

1、瞬时态:transient,session没有缓存对象,数据库也没有对应记录。

直白说就说:没有与Hibernate产生关联也没有与数据库里的记录产生关联(有关联就是与数据库中的ID有对应)

2、持久态:persistent,session缓存对象,数据库有记录。

3、托管态(游离态):detached,session没有缓存对象,数据库有记录。

二、三种状态之间的相互转换

1、瞬时态/临时态

获得:一般都只直接创建(new)

瞬时态转换为持久态:save方法、saveOrUpdate

瞬时态转换为游离态:通过setId方法设置数据

例如: User user = new User();   //瞬时态

           user.setUid(1);   //游离态

2、持久态

获得:查询操作:get、load、createQuery、createCriteria等

         执行save之后是持久态

         执行update之后是持久态

持久态转换为瞬时态:delete()

持久态转换为游离态:session没有记录

        session.close()  关闭

        session.clear()  清除所有

        session.evict(obj)  清除指定的PO对象

3、托管态/游离态

获得:创建并设置OID,通过api获得

游离态转换为瞬时态:手动去除OID,设置成默认值

游离态转换为持久态:update()、saveOrUpdate()

三、三种状态有什么用?

    我们使用Hibernate主要是为了持久化我们的数据。对于对象的状态,我们期望我们需要同步到数据库中的数据都被转换为持久状态。持久化状态的特点:Hibernate会自动将持久化状态对象的变化同步到数据库中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值