• 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 缓存中

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

     

  • 相关阅读:
    UVA 11174 Stand in a Line,UVA 1436 Counting heaps —— (组合数的好题)
    UVA 1393 Highways,UVA 12075 Counting Triangles —— (组合数,dp)
    【Same Tree】cpp
    【Recover Binary Search Tree】cpp
    【Binary Tree Zigzag Level Order Traversal】cpp
    【Binary Tree Level Order Traversal II 】cpp
    【Binary Tree Level Order Traversal】cpp
    【Binary Tree Post order Traversal】cpp
    【Binary Tree Inorder Traversal】cpp
    【Binary Tree Preorder Traversal】cpp
  • 原文地址:https://www.cnblogs.com/pjlhf/p/8727694.html
Copyright © 2020-2023  润新知