📜  休眠生命周期

📅  最后修改于: 2021-01-02 15:59:13             🧑  作者: Mango

休眠生命周期

在Hibernate中,要么创建实体的对象并将其保存到数据库中,要么从数据库中获取实体的数据。在这里,每个实体都与生命周期相关联。实体对象经过生命周期的不同阶段。

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

  • 暂态
  • 持续状态
  • 分离状态

暂态

  • 过渡状态是对象的初始状态。
  • 一旦创建了POJO类的实例,则该对象将进入瞬态状态。
  • 在这里,对象不与会话相关联。因此,过渡状态与任何数据库都不相关。
  • 因此,对数据的修改不会影响数据库中的任何更改。
  • 临时对象存在于堆内存中。它们独立于Hibernate。
Employee e=new Employee(); //Here, object enters in the transient state.
e.setId(101);
e.setFirstName("Gaurav");
e.setLastName("Chawla");

持续状态

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

我们可以将以下任何一种方法用于持久状态。

session.save(e);
session.persist(e);
session.update(e);
session.saveOrUpdate(e);
session.lock(e);
session.merge(e);

分离状态

  • 一旦我们关闭会话或清除其缓存,该对象便进入分离状态。
  • 由于对象不再与会话相关联,因此对数据的修改不会影响数据库中的任何更改。
  • 但是,分离的对象在数据库中仍然具有表示形式。
  • 如果我们要保留对分离对象所做的更改,则需要将应用程序重新附加到有效的Hibernate会话。
  • 要将分离的对象与新的休眠会话相关联,请在新会话上使用分离对象的引用使用以下任何方法-load(),merge(),refresh(),update()或save()。

我们可以对分离状态使用以下任何一种方法。

session.close();
session.clear();
session.detach(e);
session.evict(e);