我太困惑了..如果我们将对象持久化到数据库中,那么为什么Hibernate架构在应用程序中间描述持久化对象,而在下图中描述Hibernate呢?
(来源:viralpatel.net)
yhqotfr81#
我会说得更清楚一些。持久对象是您创建的POJO类的示例,表示数据库中的表中的行。根据hibernate-doc,表示数据库中表的POJO类的示例经历了3种状态,持久化是其中之一。当POJO示例在会话作用域中时,它被称为持久的,即当我们关闭或刷新会话时,Hibernate会检测到对该对象所做的任何更改,并将其与数据库同步。关于hibernate.Properties和XMLMap@Ken Chan是对的。查看hibernate-doc,了解有关Hibernate中对象的更多插图。
vohkndzv2#
首先,您需要了解Hibernate对象的三种状态,即瞬时、持久和分离。暂态:如果一个对象刚刚使用new操作符示例化,并且在数据库中没有引用它,即它不表示数据库中的任何行,则该对象处于暂态。持久化状态:如果一个对象在数据库中有引用,那么它就处于持久化状态,即它代表数据库中的某一行,并且标识符值被分配给它。如果对对象进行了任何更改,那么Hibernate将检测到这些更改并在数据库中产生影响,这就是名称持久存在的原因。这些更改是在关闭会话时进行的。持久对象在会话作用域中。分离状态:已持久且不再位于会话作用域中的对象。休眠不会检测到对此对象所做的任何更改。它可以再次连接到会话以使其再次持久。
voj3qocg3#
如图所示,您可以配置hibernate.properties或一些XML mapping,以将数据库表Map到名为persistent object的Java对象。然后在application中,将persistent object用作普通的Java对象来操作其状态。您可以将persistent object传递给Hibernate。然后,Hibernate将生成必要的SQL并向DB发出必要的SQL,以同步persistent object及其对应的数据库记录的状态。这有意义吗?
hibernate.properties
XML mapping
persistent object
application
j2qf4p5b4#
持久性对象通常是那些存在于内存中的对象,甚至超过创建它的进程的持续时间。然后将这些对象存储在数据库中。
l7mqbcuq5#
持久化对象只不过是POJO类的一个示例。而POJO类只是一个表示表的类。而Hibernate总是监视那个持久对象。每当您操作该对象或对该对象进行任何更改时,Hibernate都会在该表中执行相同的操作(该表由POJO类表示)。这些都是由休眠处理的。因此,归根结底,这是Hibernate框架的特性之一。
csbfibhn6#
持久对象是程序中在数据库中具有表示形式的类。例如,如果您有一个Car类,其属性为编号为Fuel。例如,NHibernate配置会将其Map到数据库中名为CAR的表,该表具有与CAR类属性相对应的列。
rjee0c157#
持久化对象是与DB表并行的类的Java对象。如果数据库中有一个EMP表,其中包含列name、age和salary。然后,您可以使用数据字段name、age和salary创建一个Java类,其中getter和setter用于所有三个字段。具有并行DB表的此类对象称为Persistent Object。在下图中:
EMP
name
age
salary
getter
setter
Persistent Object
Java应用程序将有POJO类,它将具有Persistent Objects,然后Hibernate框架将分别使用hibernate.properties和XML Mapping的数据库连接和对象<->表Map知识将这些对象持久化到数据库中。
POJO
Persistent Objects
Hibernate
XML Mapping
7条答案
按热度按时间yhqotfr81#
我会说得更清楚一些。持久对象是您创建的POJO类的示例,表示数据库中的表中的行。根据hibernate-doc,表示数据库中表的POJO类的示例经历了3种状态,持久化是其中之一。
当POJO示例在会话作用域中时,它被称为持久的,即当我们关闭或刷新会话时,Hibernate会检测到对该对象所做的任何更改,并将其与数据库同步。
关于hibernate.Properties和XMLMap@Ken Chan是对的。查看hibernate-doc,了解有关Hibernate中对象的更多插图。
vohkndzv2#
首先,您需要了解Hibernate对象的三种状态,即瞬时、持久和分离。
暂态:如果一个对象刚刚使用new操作符示例化,并且在数据库中没有引用它,即它不表示数据库中的任何行,则该对象处于暂态。
持久化状态:如果一个对象在数据库中有引用,那么它就处于持久化状态,即它代表数据库中的某一行,并且标识符值被分配给它。如果对对象进行了任何更改,那么Hibernate将检测到这些更改并在数据库中产生影响,这就是名称持久存在的原因。这些更改是在关闭会话时进行的。持久对象在会话作用域中。
分离状态:已持久且不再位于会话作用域中的对象。休眠不会检测到对此对象所做的任何更改。它可以再次连接到会话以使其再次持久。
voj3qocg3#
如图所示,您可以配置
hibernate.properties
或一些XML mapping
,以将数据库表Map到名为persistent object
的Java对象。然后在
application
中,将persistent object
用作普通的Java对象来操作其状态。您可以将persistent object
传递给Hibernate。然后,Hibernate将生成必要的SQL并向DB发出必要的SQL,以同步persistent object
及其对应的数据库记录的状态。这有意义吗?j2qf4p5b4#
持久性对象通常是那些存在于内存中的对象,甚至超过创建它的进程的持续时间。然后将这些对象存储在数据库中。
l7mqbcuq5#
持久化对象只不过是POJO类的一个示例。而POJO类只是一个表示表的类。而Hibernate总是监视那个持久对象。每当您操作该对象或对该对象进行任何更改时,Hibernate都会在该表中执行相同的操作(该表由POJO类表示)。这些都是由休眠处理的。因此,归根结底,这是Hibernate框架的特性之一。
csbfibhn6#
持久对象是程序中在数据库中具有表示形式的类。
例如,如果您有一个Car类,其属性为编号为Fuel。例如,NHibernate配置会将其Map到数据库中名为CAR的表,该表具有与CAR类属性相对应的列。
rjee0c157#
持久化对象是与DB表并行的类的Java对象。如果数据库中有一个
EMP
表,其中包含列name
、age
和salary
。然后,您可以使用数据字段name
、age
和salary
创建一个Java类,其中getter
和setter
用于所有三个字段。具有并行DB表的此类对象称为Persistent Object
。在下图中:
Java应用程序将有
POJO
类,它将具有Persistent Objects
,然后Hibernate
框架将分别使用hibernate.properties
和XML Mapping
的数据库连接和对象<->表Map知识将这些对象持久化到数据库中。