Hibernate中的实体状态之个人体会

本文详细解析了ORM中实体的四种状态:临时、游离、持久化及它们之间的转换过程。介绍了如何通过Hibernate API实现状态变化,适合对ORM感兴趣的开发者。

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

1.临时状态和游离状态都不在session的生命周期中.
 
2.临时状态:创建实例时是临时状态,不设置实体id或设置的id在表中找不到(delete操作)
 
3.游离状态(脱管状态):不在session的生命周期中,但实体id(持久化标识)与实际数据库中主键Id都存在且对 应.
 
4.持久化状态:在session的生命周期中,不仅实体id(持久化标识)与实际数据库中主键Id都存在且对应,并且与数据库中的表保持同步.
 
 
三种状态的转换:
 
临时-->游离  手动设置实体id与数据库中实体主键id对应
 
游离-->持久  在session生命周期中调用Hibernate Session的持久化方法save(),SaveOrUpdate()方法
 
临时-->持久  在session生命周期中调用Hibernate Session的持久化方法get(),load(),find(),iterate()方法
 
游离-->临时  在session关闭后,清除实体id属性的值或设置成表中不存在的主键Id
 
持久-->游离  关闭session,即使得不在session的生命周期中,可以调用evict(),close(),clear()
 
持久-->临时  在关闭session前,即session的生命周期结束前,从数据库中删除实体delete(),则关闭  session 后, 实体中即使得不在session的生命周期中.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值