hibernate 对象三种状态总结

hibernate 对象三种状态:


瞬时态、持久态、游离态


1、瞬时态:新创建的对象,数据库中没有此条记录,而且也没有交给session管理时,该对象即为瞬时态;
瞬时态,调用save()方法、saveOrUpdate()方法后会进入持久态;


2、持久态:
    (1)瞬时态的对象调用save()、saveOrUpdate()后进入持久态;
    (2)调用get()、load()方法获取数据库中的某条数据,接收对象为持久态;
    例如:User user = session.load(User.class, 4); //此时的user为持久态
    (3)游离态对象,调用update()、saveOrUpdate()方法会变为持久态;
进入持久态后,对象就交给session托管,持久态期间,任意调用save()或update()相关方法,都会被hibernate忽略,在commit事务时,
hibernate会检查堆中对象与session对象的差异,如果有差异则执行一次update操作。


3、游离态:
    当一个对象被创建,并且赋值了主键属性值时,数据库中有此条数据,但是此对象并未交由session托管时,对象处于游离态;
        例如:User user = new User();
                  user.setId(5);
                 //此时,对象属于游离态。

    游离态的对象,执行了delete方法时,变为瞬时态,此时数据库中没有此条记录,对象也没有由session来管理。

注意:所有与数据库的持久化操作,也就是sql语句的执行时机,都是在事务提交、或者调用session.flush()方法时执行的,save()、update()、saveOrUpdate()、delete()并不执行sql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值