05_传智播客hibernate教程_实体对象的三种状态与saveOrUpdate方法 2 关于delete后的状态

本文探讨了Hibernate中对象在被Session删除后的状态变化,包括对象标识符的状态、与数据库交互的可能性及saveOrUpdate等方法的行为表现。

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

在 05_传智播客hibernate教程_实体对象的三种状态与saveOrUpdate方法 1 中 我提出了一个疑问:

持久对象在session被删除后,那么这个对象是什么状态?

 

1 关于 delete Session.delete() will remove an object's state from the database. Your application, however, 

 

 

can still hold a reference to a deleted object. It is best to think of delete() as making a persistent

instance, transient.

sess.delete(cat);

You can delete objects in any order, without risk of foreign key constraint violations. It is still

possible to violate a NOT NULL constraint on a foreign key column by deleting objects in the wrong

order, e.g. if you delete the parent, but forget to delete the children.

(删除一个瞬时对象是不会报错的)

 

 

比较特殊的是 删除后对象是有identifier,但数据库没有这条记录

 

对这个对象进行save没有问题

                       update铁定报错

                       saveOrUpdate 铁定报错

原因见04_传智播客hibernate教程_Session接口及getloadpersist方法 2

所以在session删除后,还可能用这个对象进行数据库交互的 推荐将 identifier  设定成 unsaved-value值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值