zoukankan      html  css  js  c++  java
  • 浅谈Hibernate中的三种数据状态

    Hibernate中的三种数据状态:临时、持久、游离

    1.临时态(瞬时态)

    不存在于session中,也不存在于数据库中的数据,被称为临时态。

    数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。

    比如:刚刚使用new关键字创建出的对象。

    2.持久态

    存在于session中,事务还未提交,提交之后最终会进入数据库的数据,被称为持久态。

    数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;

    持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到)。

    比如:刚刚使用session.save()操作的对象,当对象save后,会将数据持久化,这时obj.set()后再提交事务hibernate会检测到数据的修改。

    而如果在save这个对象之前(即使是处在事务中),也即是还没有持久化这个对象之前,用obj.set()则hibernate不能检测到数据修改,不会影响数据库。

    3.游离态(脱管态)

    存在于数据库中,但不存在于session中的数据,被称为游离态。

    数据库中有数据与之对应,但当前没有session与之关联;脱管对象状态发生改变,hibernate不能检测到。

    比如:使用了session.save(),并且事务已经提交之后,对象进入数据库,就变成了游离态。

    总结:

    瞬时态: 没有session管理,同时数据库没有对应记录。

    持久态: 有session管理,同时在数据库中有记录。

    脱管态/游离态: 没有session管理,但是在数据库中有记录。

    yian
  • 相关阅读:
    用php获取本周,上周,本月,上月,本季度日期的代码
    PHP取整,四舍五入取整、向上取整、向下取整、小数截取
    图解phpstorm常用快捷键
    web安全之如何防止CSRF跨站请求伪造
    Ajax同步异步的区别
    php中文件上传需要注意的几点
    D4 HL 数据结构
    D3 HL 模拟赛订正
    D2 HL 图的高级应用 网络流专题
    D1 HL 图的高级应用 tarjan算法
  • 原文地址:https://www.cnblogs.com/xiangpeng/p/9505904.html
Copyright © 2011-2022 走看看