半点优化网 http://www.bdxc.net/
当前位置首页 > 网站技术问题> 正文

Java事务开发常见问题有哪些?

2022-01-05 19:45:01 暂无评论 189 网站技术问题 常见问题   哪些   事务

  

一、了解事务源

我在面试中经常会问到这样的一个问题,假如有一个全局变量,在一个事务中修改了这个变量的值,而后这个事务因为别的原因回滚了,那这个变量的值会回滚到更改之前的值么?

其实事务只能对它所管理的资源进行提交和回滚,这些资源就是事务源,它通常包括数据库连接资源,JMS队列资源等。
  事务的ACID(原子性,一致性,隔离性,持久性)属性也是针对它所管理的资源而言的。前面问题中的一个全局变量,可以说是内存中的一块存储空间,那么内存中的数据如何能具备事务属性中的持久性呢?很显然它不在事务的管辖范围之内,也就不会跟着事务的回滚而回滚了。
  

二、何时回滚事务

在JDBC事务和EJB的Bean管理事务中,我们通常会按下面这种方式控制事务的回滚。在出现某种的异常情况下,我们可以控制让事务回滚,当然也可以提交这个事务。

Connection cn = 。。。

cn。setAutoCommit(false);

Statement stmt = cn。
  createStatement();

try{

stmt。executeUpdate(update Order。。。);

cn。commit();

}catch(Exception e) {

cn。rollback(); //出现异常,回滚当前事务

}finally{

stmt。
  close();

cn。close();

}

但是对于EJB的容器管理事务或者Spring的声明式事务,就不大一样了。

猜你喜欢