为了账号安全,请及时绑定邮箱和手机立即绑定

简单理解hibernate的数据的三种状态。

标签:
Java MySQL Oracle

简单理解三种状态。

所谓的三种状态,说的很玄乎,还有什么宿主。搞得我头大。其实简单理解只有两种状态一种是数据位于内存的状态,一种是数据位于硬盘的状态。

而根据这些数据是否纳入session管理之下又可以分为,管理状态与不管理状态。之间的区别就是是否有一一对应的关系。

要知道hibernate的本质就是给内存中的对象与硬盘中的数据表建立联系,所以处于管理之下的数据就有这个对应联系,不在管理之下的数据就没有这个对应关系。不过即使没有对应关系,也可以找到实体类进行一一配置。

这里面可能有两种配对的方法,一种比如根据数据表建立实体咧,比如自动建立实体类与配置文件的那个方法。另一种是根据实体类创建数据表。
这里只需在配置文件中添加一行配置信息。

<property name="hbm2ddl.auto">create</property>

当然这种配置,一旦数据表创建成功,最好就要吧create变为update。不然,永远处在创建数据表的状态,所有的数据都会清零。而update就可以只跟新数据,不会对原有的数据覆盖。

当然这两种情况只是我的猜测,有助于大家理解就好,若是没有达到效果,可以略过。

综合两者就成为了纳入管理的内存中状态,也就是自由状态,纳入管理的硬盘状态,也就是持久状态,以及最后一个没有纳入管理的游离状态。而这个基本都是硬盘中的数据。因为jav虚拟的定时清理内存机制,导致内存中不可能才长时间保存数据。所以只有硬盘中的数据才会有游离状态。

一般的将自由状态和游离状态称之为vo。
将持久状态称之为po。

划分的标准就在于是否处于hibernate的管理之下。

而且两者可以自由装换,这个很好理解,数据在内存到硬盘可以自由操作。自然导致两种状态的转化,而操作状态转换的就是session。可以说这个是一切操作的核心。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消