zoukankan      html  css  js  c++  java
  • Hibernate

    • 临时对象(Transient):使用new操作符初始化的对象不是立刻就持久的。它们的状态是瞬时的,也就是说,它们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其他对象所引用),它们的状态将会丢失,并由垃圾回收机制回收

        –      在使用代理主键的情况下, OID 通常为 null

        –      不处于 Session 的缓存中

        –      在数据库中没有对应的记录

    • 持久化对象(也叫”托管”)(Persist):持久化实例是任何具有数据库标识的实例。它有持久化管理器Session统一管理,持久化实例是在事务中进行操作的——它们的状态在事务结束时同数据库进行同步。当事务提交时,通过执行SQL的insert、update和delete语句把内存中的状态同步到数据库中

        –      OID 不为 null

        –      位于 Session 缓存中

        –      若在数据库中已经有和其对应的记录, 持久化对象和数据库中的相关记录对应

        –      Session 在 flush 缓存时, 会根据持久化对象的属性变化, 来同步更新数据库

        –      在同一个 Session 实例的缓存中, 数据库表中的每条记录只对应唯一的持久化对象

    • 游离对象(也叫”脱管”) (Detached):Session关闭之后,持久化对象就变成离线对象。离线表示这个对象不能再与数据库保持同步,它们不再受Hibernate管理。

        –      OID 不为 null

        –      不再处于 Session 缓存中

        –      一般情况需下, 游离对象是由持久化对象转变过来的, 因此在数据库中可能还存在与它对应的记录

    • 删除对象(Removed)

        –      在数据库中没有和其 OID 对应的记录

        –      不再处于 Session 缓存中

        –      一般情况下, 应用程序不该再使用被删除的对象

     

  • 相关阅读:
    MAC 设置环境变量
    查询端口使用情况
    如何查看Oracle数据库字符集 尚未研究
    Python的MD5加密
    数据库解锁用户
    Oracle创建用户,赋予权限
    plsql
    福州周边游玩
    django笔记--1
    Linux速成
  • 原文地址:https://www.cnblogs.com/pjlhf/p/8727694.html
Copyright © 2011-2022 走看看