gpt4 book ai didi

java - hibernate内部如何判断对象是否处于分离状态

转载 作者:行者123 更新时间:2023-11-30 08:00:50 25 4
gpt4 key购买 nike

我一直在四处寻找并寻找了解 hibernate 在内部如何确定对象是否分离的方法。试图查看 hibernate 代码,但无法弄清楚。在stackoverflow中看到过一些线程,但它们都讨论了我们如何在程序中确定一个对象是否分离。但是我想了解的是hibernate内部如何识别分离的对象。背后的算法是什么这个识别场景是哪个??

最佳答案

当然,如果实体是托管的(即附加到当前 session ,则它不会分离)。关键部分是区分 transient 实体(即不受管理的实体实例,并且数据库中尚不存在)和分离实体(即不受管理的实体,但应该已经存在于数据库中)数据库)。

确定实体是否分离或 transient 的算法的主要部分在 AbstractEntityPersister.isTransient() 中。

基本上,如果它具有空标识符或空乐观锁版本属性(即用 @Version 注释的属性),则它被视为 transient 。

还有其他微妙之处,但如果您使用自动生成的标识符,并且标识符不为空,那么 Hibernate 会将其视为独立实体。如果您使用分配的标识符,那么它需要检查数据库(除非您还有版本属性)。这是使用自动生成的标识符的另一个充分理由。

关于java - hibernate内部如何判断对象是否处于分离状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38189687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com