gpt4 book ai didi

java - 检查 Hibernate 中的分离实体

转载 作者:行者123 更新时间:2023-12-01 09:13:49 24 4
gpt4 key购买 nike

我只是想知道 Hibernate 如何识别对象是否是独立实体。我并不是要求什么具体的方法,只是想了解背后的机制。

最佳答案

来自 JBoss 文档:

Detached - a detached instance is an object that has been persistent, but its Session has been closed. The reference to the object is still valid, of course, and the detached instance might even be modified in this state. A detached instance can be reattached to a new Session at a later point in time, making it (and all the modifications) persistent again. This feature enables a programming model for long running units of work that require user think-time. We call them application transactions, i.e., a unit of work from the point of view of the user.

所以 Hibernate 基本上会跟踪 session 和附加对象。 与该 session 关联以实现持久性的任何对象都会分离并变得像任何其他 POJO 一样。

Hibernate 的作用是:

  1. 在对象引用上调用 session.evict() 或从 session 中删除对象的 session.clear()
  2. Hibernate 持久管理器依赖标识符的存在来确定对象的状态。如果一个对象有标识符,那么该对象是持久的,如果它不属于 session ,那么它是DETACHED
  3. 打开新 session 后,可以重新关联分离的对象并将其同步到数据库。
  4. 对分离对象引用调用 session.update()session.saveOrUpdate() 会将分离对象转换回>持久状态
  5. 当分离的对象重新附加时,数据库将使用对象的当前状态进行更新;包括在分离状态下所做的更改。

可以找到一个很好的引用here .

关于java - 检查 Hibernate 中的分离实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40731816/

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