hibernate中的三种状态

hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久化状态就是已经被保存到数据库中,离线状态就是数据库中有,但是session中不存在该对象。

这里写图片描述


以上是转载内容:http://www.cnblogs.com/xiaoluo501395377/p/3380270.html

下面说说自己的理解:

public static void main(String[] args) {
        Student s  = new Student();
        s.setId(2);
        s.setName("dqf");
        s.setAge(22);

        Configuration cfg = new AnnotationConfiguration();
        SessionFactory sf = cfg.configure().buildSessionFactory();
        Session session = sf.openSession();
//      Session session_1 = sf.getCurrentSession();

        session.beginTransaction();
        session.save(s);
        session.getTransaction().commit();
        session.close();
    }

1.首先在内存中有创建一个Student实例,id为2;这个时候student和数据库 一毛钱的关系都没有,称之为transient状态。

2.执行完save方法之后,需要把student作为一个实体存储在数据库中,要把内存中的一个对象存储在数据库中,好像中间还需要个什么东西,我们的理解应该是session吧,此时session中有一个指针指向Student的这个实例。这个时候 Student的实例与数据库是有联系的,这个状态就是persistent状态。

3.执行完close之后,session被关闭,也就是说,内存中Student的实例与数据库中student的这条记录的关系中断了,这个状态就是detached状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值