java事物空间查询_java事务 - 夏昀的个人空间 - OSCHINA - 中文开源技术交流社区
1 什么是事务事务就是把多个事件,看作一个事件来处理2 为什么要有事务为了数据的安全,以数据库JDBC为例,A转钱给B,如果没有数据库的事务,A转给B时发生了错误,b没有接受到钱,但是A的数据操作正确,就会导致A用户的钱没有了,B用户的钱没有增加。如果有事务,就会把钱返回给A3事务的原则必须遵循ISO/IEC所制定的ACID原则原子性(atomicity):事务要么全部执行,要么全部不执行。失败时
1 什么是事务
事务就是把多个事件,看作一个事件来处理
2 为什么要有事务
为了数据的安全,以数据库JDBC为例,A转钱给B,如果没有数据库的事务,A转给B时发生了错误,b没有接受到钱,但是A的数据操作正确,就会导致A用户的钱没有了,B用户的钱没有增加。如果有事务,就会把钱返回给A
3事务的原则
必须遵循ISO/IEC所制定的ACID原则
原子性(atomicity):事务要么全部执行,要么全部不执行。失败时,进行事务回滚
一致性(consistency):表示事务执行失败时,所有被该事务影响的数据都回到原来的状态;事务从一种正确的状态,转换到另一种正确的状态
隔离性(isolation):事务在执行过程对数据的修改,在事务提交之前对其他事务都是不可见的
持久性(durability):一个事务一旦提交,事务的操作将永久保存在DB中。即使此时执行回滚操作也不能撤消所做的更改。
3事务的类型
有三种:JDBC事务 JTA(Java Transaction Api)事务 容器事务
4三种事务的差异
JDBC事务:控制在一个数据库中,但是操作简单
JTA事务:功能强大,事务可以跨越多个数据库或DAO,使用也比较复杂
容器事务:主要是指J2EE应用服务器提供的事务管理,局限于EJB应用使用
5事务并发可能引起的问题
脏读:一个事务读取了另一个事务尚未提交的数据
不可重复读:一个事务的操作导致另一个事务前后读取到不同的事务
幻读:一个事务的操作导致另一个事务前后再次查询的结果数据量不同
6JDBC事务支持体现在三个方面
1自动提交模式(Auto-commit code)(默认为true)
a,如果为true,每个独立的SQL操作的执行完毕,事务即立即提交,也就是説每个SQL都一个事务
1.JDBC规范是这样规定的:对数据操作语言(DML,如insert,update,delete)和数据定义语言(如create,drop),语句一执行完就视为执行完毕。
2.对select语句,当与它关联的ResultSet对象关闭时,视为执行完毕。
3.对存储过程或其他返回多个结果的语句,当与它关联的所有ResultSet对象全部关闭,所有update count(update,delete等语句操作影响的行数)和output parameter(存储过程的输出参数)都已经获取之后,视为执行完毕
b,如果为false,每个事务都必须显示调用commit进行提交,或者用rollback进行回滚
2事务隔离级别
五种事务隔离级别
3保存点:设置为保存点,事务回滚可以到保存点,而不是整个事务
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)