zoukankan      html  css  js  c++  java
  • Hibernate 对象状态

    1、瞬时对象(Transient Objects):

          使用new操作符初始化的对象不是立刻持久的。的状态是瞬时的,也就说没有和任何数据库表进行关联。只要应用不再引用这对象,他的状态将丢失,并且由垃圾回收机制回收。数据库中没有此对象,只是存在内存中。

    2、持久对象(Persist Objects):持久对象是具有数据库标识的,也就是从数据库获取来的。他有持久化管理器Session统一管理,持久实例实在事务中进行操作--当事务结束他的状态与数据库同步,可以这样理解当我们在对象处于Persist 状态时候我们对对象的改变将会同步道数据库中,其原理是当事务提交时刻,提供执行SQL的i(DML)nsert 、update、delete语句把内存中的状态同步到数据库中。

    3、脱管对象、游离状态(Detached Objects):Session关闭之后,持久化对象变成离线对象,离线对象就不能同数据库同步,也不再受Hibernate管理此时数据库中还存在这个对象,只是没有纳入Session管理

    eclipse 生成DAO代码与状态的关系:

    1.saveOrUpdate(Instance) 操作临时、脱管对象,然后对象变成持久状态

    2. lock(detachedInstance) 操作干净的脱管状态对象,然后对象变成持久状态

    3. merge(detachedInstance) 操作脱管状态对象,然后对象变成持久状态

    4. attachDirty(instance) 操作不干净的临时、游离对象

    5. attachClean(detachedInstance)操作脏脱管对象

  • 相关阅读:
    Git 分支使用
    ansible 2.7 API
    zabbix api
    (四)ansible 通过堡垒机访问内网服务器
    C#实体对象出现中文处理乱码的问题
    mysql数据库数据(字段数过大)太多导入不了的解决方法
    MathWorks.MATLAB.NET.Arrays.MWArray”的类型初始值设定项引发异常 解决方法
    hibernate 主键生成方式
    HTN规划 jshop2
    自动驾驶
  • 原文地址:https://www.cnblogs.com/kevinge/p/1372565.html
Copyright © 2011-2022 走看看