zoukankan      html  css  js  c++  java
  • Hibernate学习之数据库隔离级别 与 持久对象生命周期

    数据库隔离级别

    1、Read Uncommited(未提交读):没有提交就可以读取到数据(发出了Insert,但没有commit就可以读取到。)很少用

    2、Read Commited(提交读):只有提交后才可以读,常用

    3、Repeatable Read(可重复读):mysql默认级别, 必需提交才能见到,读取数据时数据被锁住

    4、Serialiazble(序列化读):最高隔离级别,串型的,你操作完了,我才可以操作,并发性特别不好

    脏读:没有提交就可以读取到数据称为脏读

    不可重复读:再重复读一次,数据与你上的不一样。称不可重复读

    幻读:在查询某一条件的数据,开始查询的后,别人又加入或删除些数据,再读取时与原来的数据不一样了

    持久化对象的状态:

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

    2、持久化对象(Persistent Object)持久实例是任何具有数据库标识的实例,它由持久化管理器Session统一管理,持久实例是在事务中进行操作的----它们的状态在事务结束时同数据库进行同步。当事务提交时,通过执行SQL的INSERT、UPDATE和DELETE语句把内存中的状态同步到数据库中

    3、离线对象(Detached Object)Session关闭之后,持久化对象就变为离线对象。离线表示这个对象不能再与数据库保持同步,不再受hibernate管理

    Transient对象:随时可能被垃圾回收器回收(在数据库中没有于之对应的记录,是new初始化),没有纳入session的管理,而执行save()方法后,就变为Persistent对象(持久性对象)

    Persistent对象:在数据库中有存在的对应的记录,纳入session管理。在清理缓存(脏数据检查)的时候,会和数据库同步

    Detached对象:也可能被垃圾回收器回收掉(数据库中存在对应的记录,只是没有任何对象引用它是指session引用),没有纳入session的管理

  • 相关阅读:
    了解什么是版本控制 & 用tortoiseSVN 建立本地版本库来管理自己的代码
    windows下用wampServer 为wordpress 搭建本地服务器运行环境
    使用Windows Live Writer 作为博客园PC客户端发表博客
    重装SQL前,一定要把SQL2005、SQL2008之类的彻底删除干净
    jdk-7u40-windows-i586的安装
    【react】---Immutable的基本使用
    【巷子】---webpack配置非CMD规范的模块
    【巷子】---Mock---基本使用
    【巷子】---fetch---基本使用
    【巷子】---vue基于mint-ui三级联动---【vue】
  • 原文地址:https://www.cnblogs.com/lyp3314/p/2877174.html
Copyright © 2011-2022 走看看