持久化对象在Hibernate架构中意味着什么?

时间:2012-12-24 19:42:11

标签: hibernate persistence

  

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

我很困惑,如果我们坚持并反对数据库,那么为什么Hibernate架构会在Application和Hibernate中间指示持久对象?

a busy cat

6 个答案:

答案 0 :(得分:32)

我会让它更清晰。持久对象是您创建的POJO类的实例,它们表示数据库中表中的行。 根据{{​​3}},表示数据库中的表的POJO类的实例经历了3个状态,其中持久性是其中之一。

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

关于hibernate.properties和XML Mapping @Ken Chan是对的。有关休眠对象的更多插图,请浏览hibernate-doc

答案 1 :(得分:19)

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

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

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

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

答案 2 :(得分:8)

根据该图,您可以配置hibernate.properties或某些XML mapping以将数据库表映射到名为persistent object的java对象。

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

答案 3 :(得分:6)

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

答案 4 :(得分:4)

持久对象只不过是POJO类的一个实例。而POJO类只不过是一个代表表的类。并且Hibernate总是监视那个持久对象。无论何时操作该对象或者在该对象中进行了任何更改,Hibernate都会在该表中执行相同的操作(该表由POJO类表示)。这一切都由hibernate处理。所以在排序中这是hibernate框架的一个特性。

答案 5 :(得分:1)

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

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