hibernate三种状态的问题?
瞬时状态下的数据正在进行持久化操作之时,毫无疑问会变成持久化,在session关闭之后会成为游离数据,但是反过来,当从数据库把一条资料查出来就直接装在一个没有new的对象...
瞬时状态下的数据正在进行持久化操作之时,毫无疑问会变成持久化,在session关闭之后会成为游离数据,但是反过来,当从数据库把一条资料查出来就直接装在一个没有new的对象里“时”,会是持久化状态,有些人认为其实即使从数据中读取出来内部new对象的操作只是封装了,最终还是叫瞬时数据?我想了解三种状态的处理转换的实质原理?不知有没有哪位大侠可以告知小弟?
展开
4个回答
展开全部
我比较喜欢举例子,通俗的例子,这样更直观。
我们把数据库比喻成一个登记簿吧
当我们把信息登记到登记簿上的时候,这个过程就是持久化的过程。当登记完成之后,登记簿上的数据就是持久态数据,所谓持久态就是一直存在的状态。
当我们需要用数据的时候,会从登记簿上查信息,我们查到的信息记录在临时的纸张或者脑海里,然后登记簿会放回原位,这时候临时纸张上或者脑海里的数据就是游离态,随时可能被遗忘,在hibernate中就是随时会被销毁的数据。
瞬态数据和游离态数据有点儿类似,但是一点,就是他是存在持久化之前的数据,就是说我需要登记个人信息,我的个人信息还没有登记到登记簿上的时候,信息就是瞬态,一旦登记到登记簿上就变成持久态了,然后再查询到的就是游离态。
有问题没?可以明白了吧,那就……你懂得。。。
我们把数据库比喻成一个登记簿吧
当我们把信息登记到登记簿上的时候,这个过程就是持久化的过程。当登记完成之后,登记簿上的数据就是持久态数据,所谓持久态就是一直存在的状态。
当我们需要用数据的时候,会从登记簿上查信息,我们查到的信息记录在临时的纸张或者脑海里,然后登记簿会放回原位,这时候临时纸张上或者脑海里的数据就是游离态,随时可能被遗忘,在hibernate中就是随时会被销毁的数据。
瞬态数据和游离态数据有点儿类似,但是一点,就是他是存在持久化之前的数据,就是说我需要登记个人信息,我的个人信息还没有登记到登记簿上的时候,信息就是瞬态,一旦登记到登记簿上就变成持久态了,然后再查询到的就是游离态。
有问题没?可以明白了吧,那就……你懂得。。。
展开全部
hibernate会自己创建一个继承于你的实体类的子类,子类里有一些表示状态和字段关联信息的属性,能追踪到当前的连接状态,和实体类的属性值变化。
通过这些属性控制转换。
通过这些属性控制转换。
追问
具体怎么转化呢,反射回去吗,还是一步步调试回去?
追答
需要读hibernate源码,我没看过。
状态值与session的维持机制有关,也不是简单的几个名词可以说明的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1,瞬时态(临时态)
a,不被session管理
b,数据库中没有这条记录
c,可以被JVM垃圾回收
2,持久太
a,被session管理
b,数据库中记录存储
c,不能回收
3,游离态(脱离态)
a,不被session管理
b,数据库中有记录
c,可以被JVM垃圾回收
a,不被session管理
b,数据库中没有这条记录
c,可以被JVM垃圾回收
2,持久太
a,被session管理
b,数据库中记录存储
c,不能回收
3,游离态(脱离态)
a,不被session管理
b,数据库中有记录
c,可以被JVM垃圾回收
更多追问追答
追问
这个我看了的..更原理的,实质
追答
找源码去
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
hibernate的对象有3种状态,
分别为:瞬时态(transient)、持久态(persistent)、脱管态(detached)
.处于持久态的对象也称为po(persistenceobject),瞬时对象和脱管对象也称为vo(valueobject).
分别为:瞬时态(transient)、持久态(persistent)、脱管态(detached)
.处于持久态的对象也称为po(persistenceobject),瞬时对象和脱管对象也称为vo(valueobject).
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询