Hibernate 生命周期

17 Mar 2025 | 阅读 2 分钟

在 Hibernate 中,我们可以创建一个实体对象并将其保存到数据库中,或者从数据库中获取实体的数据。这里,每个实体都与生命周期相关联。实体对象会经历生命周期的不同阶段。

Hibernate 生命周期包含以下状态: -

  • 瞬时状态
  • 持久状态
  • 脱管状态
Hibernate Lifecycle

瞬时状态

  • 瞬时状态是对象的初始状态。
  • 一旦我们创建一个 POJO 类的实例,该对象就进入了瞬时状态。
  • 在这里,对象不与 Session 关联。因此,瞬时状态与任何数据库无关。
  • 因此,数据的修改不会影响数据库中的任何更改。
  • 瞬时对象存在于堆内存中。它们独立于 Hibernate。

持久状态

  • 一旦对象与 Session 关联,它就进入了持久状态。
  • 因此,我们可以说,当我们保存或持久化一个对象时,该对象处于持久状态。
  • 在这里,每个对象代表数据库表的一行。
  • 因此,数据的修改会在数据库中进行更改。

我们可以使用以下任何一种方法来实现持久状态。


脱管状态

  • 一旦我们关闭会话或清除其缓存,对象就会进入脱管状态。
  • 由于对象不再与 Session 关联,因此数据的修改不会影响数据库中的任何更改。
  • 但是,脱管对象仍然在数据库中有一个表示。
  • 如果我们想持久化对脱管对象所做的更改,则需要将应用程序重新附加到有效的 Hibernate 会话。
  • 要将脱管对象与新的 Hibernate 会话相关联,请在新会话中使用以下任何一种方法 - load()、merge()、refresh()、update() 或 save(),并使用脱管对象的引用。

我们可以使用以下任何一种方法来实现脱管状态。


下一个主题Hibernate 教程