hibernate三种状态转换有什么用

 我来答
lalazf472
2017-03-13 · TA获得超过227个赞
知道答主
回答量:353
采纳率:0%
帮助的人:103万
展开全部
  对于hibernate,它的对象有三种状态,transient、persistent、detached
  
  
  1.transient:瞬态或者自由态
  (new DeptPo(1,地行政部地,20,地行政相关地),该po的实例和session没有关联,该po的实例处于transient)
  2.persistent:持久化状态
  (和数据库中记录想影射的Po实例,它的状态是persistent, 通过get和load等得到的对象都是persistent)
  3.detached:脱管状态或者游离态
  (1)当通过get 或load方法得到的po对象它们都处于persistent,但如果执行delete(po)时(但不能执行事务),该po状态就处于 detached, (表示和session脱离关联),因delete而变成游离态可以通过save或saveOrUpdate()变成持久态
  (2)当把session关闭时,session缓存中的persistent的po对象也变成detached
  因关闭session而变成游离态的可以通过lock、save、update变成持久态
  持久态实例可以通过调用 delete()变成脱管状态。
  通过get()或load()方法得到的实例都是持久化状态的。
  脱管状态的实例可以通过调用lock()或者replicate()进行持久化。
  
  save()和persist()将会引发SQL的INSERT,delete()会引发SQLDELETE,
  而update()或merge()会引发SQL UPDATE。对持久化(persistent)实例的修改在刷新提交的时候会被检测到,它也会引起SQL UPDATE。
  saveOrUpdate()或者replicate()会引发SQLINSERT或者UPDATE
勇子好勇的2450
2017-03-13 · TA获得超过2060个赞
知道小有建树答主
回答量:395
采纳率:0%
帮助的人:237万
展开全部
对于和ibernate而言,对象有三种状态:瞬时对象,持久对象,游离对象或脱管对象 1.瞬时(transient):数据库中没有数据与之对应,超过作用域会被jvm的垃圾收集器回收,一般是new出来且与session没有关联的对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式