zoukankan      html  css  js  c++  java
  • 事务的特性..

    一、首先,事务并不不能简单地理解让你的sql可不可以执行。就说事务的原子性,即可以说事务是数据库查询的基本单元(而不是一条语句),要么在事务的语句全部执行,或者全部都不执行。

    比如:现在我需要删除一个班级Class记录,和这个班级对应的全部学生Student记录。那么我就应该写两条删除语句delete from Student where cid = ?和delete from Class where cid = ?

    1. 如没有事务处理,这时候出现删除学生没问题,但是删除班级出现问题,那么就会出现班级记录的冗余数据,使得数据库数据的不完整性。这是不愿意看到的。

    2. 如果加了事务处理呢,一条语句出错,就会进行事务回滚,使得全部恢复操作之前的数据,这就是要么全部执行,要么都不执行,保证数据的完整性。

    二、hibernateTemplate的问题

    hibernateTemplate是spring中的hibernate操作模板,它封装了session,那么session对象是什么时候关闭的呢。

    1. 如果使用了数据源(数据源肯定要使用的),那么session是不会关闭的(session就是jdbc的connection),而只是会有一个 false赋值给一个包含有session的一个内部类(相当于C语言的结构体,c3p0是这么做的,其他数据源包应该也差不多)表明这个session 是空闲的。

    2. 那么什么时候会使当前的session标识空闲呢,这个就要看你的spring配置文件是怎么配置的了。一般在spring都是使用aop的事务管理,具体,你可以去看下这方面的知识点。比如一下(aop事务管理不完整片段)

    <aop:config>
    <aop:pointcut id="bussinessService"
        expression="(execution(public * com.study.service..*.*(..)))" />
        <aop:advisor pointcut-ref="bussinessService"
            advice-ref="txAdvice" />
    </aop:config>

    待续..

    鸣谢:http://zhidao.baidu.com/link?url=VvNy0poIdw5buQ7vNuuq-ZdMsOvXjTVDM4JlI0YBD6uAnAIxehx3yT2CwxPSWJ2D0h2Vbw0RhusfyF2orDd2T_

  • 相关阅读:
    PL/SQL 训练05--游标
    PL/SQL 训练04--事务
    PL/SQL 训练03 --异常
    PL/SQL 训练02--集合数组
    PL/SQL 训练01--基础介绍
    25 mysql怎么保证高可用
    pt工具之pt-archiver
    Oracle日常性能问题查看
    Oracle的cursor
    Oracle 索引扫描的几种情况
  • 原文地址:https://www.cnblogs.com/wql025/p/4822790.html
Copyright © 2011-2022 走看看