Hibernate的三种状态

本文详细介绍了对象关系映射(ORM)中对象的三种状态:临时状态、持久化状态和游离状态,并阐述了如何使用saveOrUpdate方法来根据对象的不同状态进行正确的数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.临时状态

临时状态也称为瞬时状态,该对象既没有在session中也没有在数据库中,刚new出来的对象或者session执行了delete方法之后的对象都处于临时(瞬时)状态.

2.持久化状态

该对像存储于session中,在数据库中也有该对象的的数据,那么我们就说该对象处于持久化状态;临时状态下的对象执行了save()方法也会处于持久化状态,还有游离状态下的对象执行upDate , get或load方法之后得到的对象都处于持久化状态.

3.游离状态

该对象在数据库中有表示符(该对象的id在数据库表中存在)在session中没有该对象.一般session执行了close , clear , evict等方法,处于持久化状态的对象就成了游离状态.刚实例化(new)出来的对象,如果在数据库中有它的主键,那么该对象是游离化状态.

 

saveOrUpdate该如何使用?

saveOrUpdate的使用时根据对象的状态判断的,一般如果对象处于临时(瞬时)状态,那么就执行save方法,如果对象是游离状态就执行update方法.

  • save是返回插入数据的主见的,而saveOrUpdate是void
  • save方法更适用与确定了是要插入,而且需要得到插入数据的主键而saveOrUpdate更倾向于不缺定是插入还是更新,而且你不需要得到他的主键

 

  • 另一方面,如果你无法确定你要插入或更新的对象是不是持久态或游离态时。如果你save一个持久态或更新一个游离态,这都是有问题的,此时你就要用到saveOrUpdate
  • 总体来说,如果你能确定你即将操作对象的状态,则不需要用saveOrUpdate

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊掌渔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值