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会自动将持久化状态对象的变化同步到数据库中。

猜你喜欢

转载自blog.csdn.net/pcwl1206/article/details/80625364
今日推荐