简单理解三种状态。
所谓的三种状态,说的很玄乎,还有什么宿主。搞得我头大。其实简单理解只有两种状态一种是数据位于内存的状态,一种是数据位于硬盘的状态。
而根据这些数据是否纳入session管理之下又可以分为,管理状态与不管理状态。之间的区别就是是否有一一对应的关系。
要知道hibernate的本质就是给内存中的对象与硬盘中的数据表建立联系,所以处于管理之下的数据就有这个对应联系,不在管理之下的数据就没有这个对应关系。不过即使没有对应关系,也可以找到实体类进行一一配置。
这里面可能有两种配对的方法,一种比如根据数据表建立实体咧,比如自动建立实体类与配置文件的那个方法。另一种是根据实体类创建数据表。
这里只需在配置文件中添加一行配置信息。
<property name="hbm2ddl.auto">create</property>
当然这种配置,一旦数据表创建成功,最好就要吧create变为update。不然,永远处在创建数据表的状态,所有的数据都会清零。而update就可以只跟新数据,不会对原有的数据覆盖。
当然这两种情况只是我的猜测,有助于大家理解就好,若是没有达到效果,可以略过。
综合两者就成为了纳入管理的内存中状态,也就是自由状态,纳入管理的硬盘状态,也就是持久状态,以及最后一个没有纳入管理的游离状态。而这个基本都是硬盘中的数据。因为jav虚拟的定时清理内存机制,导致内存中不可能才长时间保存数据。所以只有硬盘中的数据才会有游离状态。
一般的将自由状态和游离状态称之为vo。
将持久状态称之为po。
划分的标准就在于是否处于hibernate的管理之下。
而且两者可以自由装换,这个很好理解,数据在内存到硬盘可以自由操作。自然导致两种状态的转化,而操作状态转换的就是session。可以说这个是一切操作的核心。