码迷,mamicode.com
首页 > 其他好文 > 详细

事务的特性..

时间:2015-09-20 06:57:15      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

一、首先,事务并不不能简单地理解让你的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_

 

事务的特性..

标签:

原文地址:http://www.cnblogs.com/wql025/p/4822790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!