40

Hibernate 是一个持久化框架,用于将数据从 Java 环境持久化到数据库。

我很困惑..如果我们将一个对象持久化到数据库中,那么为什么Hibernate Architecture在下图中的Application和Hibernate中间描绘了持久化对象?

一只忙碌的猫
(来源:viralpatel.net

4

6 回答 6

37

我会让它更清楚。持久对象是您创建的 POJO 类的实例,它们表示数据库中表中的行。根据hibernate-doc,表示数据库中表的POJO类的实例经历了3种状态,其中持久化是其中之一。

当 POJO 实例在会话范围内时,它被称为是持久的,即休眠检测对该对象所做的任何更改,并在我们关闭或刷新会话时将其与数据库同步。

关于 hibernate.properties 和 XML 映射 @Ken Chan 是对的。通过hibernate-doc了解更多关于 hibernate 对象的说明。

于 2012-12-26T05:29:04.930 回答
33

首先您需要了解 Hibernate 对象的三种状态,即 Transient、Persistent、Detached。

瞬态:如果一个对象刚刚使用 new 运算符实例化并且在数据库中没有它的引用,即它不代表数据库中的任何行,则该对象处于瞬态。

持久状态:如果一个对象在数据库中有一些引用,即它表示数据库中的某些行并且为其分配了标识符值,则该对象处于持久状态。如果对对象进行了任何更改,那么 hibernate 将检测到这些更改,并且影响将存在于数据库中,这就是名称 Persistent 的原因。这些更改是在会话关闭时进行的。持久对象在会话范围内。

分离状态:一个已经持久化并且不再在会话范围内的对象。hibernate 不会检测到对此对象所做的任何更改。它可以再次连接到会话以使其再次持久化。

于 2016-09-08T05:18:02.427 回答
8

根据该图,您配置hibernate.properties或一些XML mapping将数据库表映射到被调用的 java 对象persistent object

然后在您application的 .persistent object作为一个普通的 java 对象来操作它的状态。您可以传递persistent object给hibernate。然后Hibernate 将生成并向DB 发出必要的SQL 以同步其状态persistent object及其相应的数据库记录。这有意义吗?

于 2012-12-24T19:55:53.347 回答
6

持久对象通常是那些存在于内存中的对象,甚至超出了创建它的进程的持续时间。然后将这些对象存储在数据库中。

于 2014-09-05T06:01:20.523 回答
5

持久对象只不过是 POJO 类的一个实例。而 POJO 类只不过是一个代表表的类。而且 Hibernate 总是监视那个持久对象。每当您操作该对象或对该对象进行任何更改时,Hibernate 都会在该表中执行相同的操作(由 POJO 类表示)。这一切都由hibernate处理。所以总的来说这是hibernate框架的特点之一。

于 2014-08-07T12:14:34.730 回答
2

持久对象是程序中在数据库中有表示的类。

例如,如果您有一个具有 NumberPlate、Fuel 属性的 Car 类。NHibernate 配置会将其映射到例如数据库中名为 Car 的表,并且这些列对应于 Car 类属性。

于 2012-12-24T19:44:06.713 回答