Hibernate是一个持久化框架,用于将Java环境中的数据持久化到数据库中。
我很困惑...如果我们将对象持久化到数据库中,那么为什么Hibernate架构在下面的图片中将持久化对象描绘在应用程序和Hibernate之间的中间层呢?
(来源: viralpatel.net)
我很困惑...如果我们将对象持久化到数据库中,那么为什么Hibernate架构在下面的图片中将持久化对象描绘在应用程序和Hibernate之间的中间层呢?
![a busy cat](https://istack.dev59.com/xC7bv.webp)
我会使它更加清晰。 持久化对象是您创建的POJO类的实例,表示数据库中表中的行。 根据hibernate-doc,表示数据库中表的POJO类实例经历了3个状态之一是持久状态。
当POJO实例在会话范围内时,它被认为是持久的,即当我们关闭或刷新会话时,Hibernate检测到对该对象所做的任何更改并将其与数据库同步。
至于hibernate.properties和XML映射@Ken Chan是正确的,请查看hibernate-doc以获取有关Hibernate中对象的更多说明。
首先,您需要了解Hibernate对象的三种状态,即瞬态、持久态和游离态。
瞬态:如果一个对象只是使用new操作符实例化,并且数据库中没有它的引用,那么它就处于瞬态。
持久态:如果一个对象在数据库中有某些引用,并且已经分配了标识符值,那么它就处于持久态。如果对该对象进行任何更改,则Hibernate将检测到这些更改,并且该数据库中的效果将存在于该对象之上,因此称为持久态。这些更改是在会话关闭时进行的。持久对象处于会话范围内。
游离态:一种已经持久化但不再处于会话范围内的对象。Hibernate将无法检测到对此对象所做的任何更改。它可以重新连接到会话以使其再次持久化。
hibernate.properties
或一些 XML映射
来将数据库表映射到一个称为persistent object
的Java对象上。application
中,您可以像操作普通的Java对象一样操纵persistent object
的状态。您可以将persistent object
传递给Hibernate,Hibernate将生成并发出必要的SQL语句到数据库以同步persistent object
及其对应的数据库记录的状态。持久化对象通常是指那些即使在创建它的进程结束后仍然存在于内存中的对象。这些对象随后被存储在数据库中。
持久化对象只是POJO类的一个实例。而POJO类只是表示表的类。Hibernate始终监视持久对象。无论您何时操作该对象或对其进行任何更改,Hibernate都会在该表中执行相同的操作(由POJO类表示)。这一切都由Hibernate处理。因此,总体来说,这是Hibernate框架的一个特性。