Hibernate 中四种对象状态变化过程详解

临时状态(transient):刚用 new 语句创建,还没有被持久化,并且不处于 Sesssion 的缓存中。处于临时状态的 Java 对象被称为临时对象。

持久化状态(persistent):已经被持久化,并且加入到 Session 的缓存中。处于持久化状态的 Java 对象被称为持久化对象。

删除状态(removed):不再处于 Session 的缓存中,并且 Session 已经计划将其从数据库中删除。处于删除状态的 Java 对象被称为删除对象。

游离状态(detached):已经被持久化,但不再处于 Session 的缓存中。处于游离状态的 Java 对象被称为游离对象

 

实例分析如下:

package com.java1234.service;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import com.java1234.model.Class;
import com.java1234.model.Student;
import com.java1234.util.HibernateUtil;

public class StudentTest {
    
    public static void main(String[] args) {
        SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
        Session session=sessionFactory.openSession(); // 生成一个session
        session.beginTransaction(); // 开启事务
        
        Class c1=new Class(); // 临时对象1    步骤1
        c1.setName("08计本");
        
        Class c2=new Class();  // 临时对象2  步骤1
        c2.setName("09计本");
        
        session.save(c1); // 持久化对象    步骤2
        session.save(c2); // 持久化对象     步骤2

 

      //执行完步骤2时数据库表中只有2条空数据
        
        session.delete(c2); // 删除对象     c2对象的步骤3    
        
        session.getTransaction().commit(); // 提交事务后,数据库中才插入了实际的数据
        session.close(); // 关闭session    c1对象的步骤3,假如c2没删除的话执行close方法,c1和c2对象都会变成游离对象,
        
        System.out.println(c1.getName()); // 游离对象,会打印输出08计本
        System.out.println(c2.getName()); // 删除对象,会打印输出09计本
    }
}

 

 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值