Java 编程 ,事务管理的作用

写了不少程序,Spring也经常用,每次用到数据库时都会用Spring 事务管理,只知道用事务管理好,但现在还是不明白有什么作用,求高手解答啊

事务就是对一系列的数据库操作进行统一的提交或回滚操作,比如说做一个转账功能,要更改帐户两边的数据,这时候就必须要用事务才能算是严谨的做法。要么成功,要么失败,保持数据一致性。如果中间有一个操作出现异常,那么回滚之前的所有操作。
这样有什么好处呢。
这样可以防止在一些意外(例如说突然断电)的情况下出现乱数据,防止数据库数据出现问题。这边加了钱,那边却还是一样的数,这就完了。要是开放一个网上交易的平台,这样就会出大问题的!
还有其他的一些操作,像是要添加多条数据,如果程序要求必须全部正确才能插入的话,事务又起大作用了。
等等。。。开发中为了避免这种情况一般都会进行事务管理。

在JDBC中是通过Connection对象进行事务管理的,默认是自动提交事务,可以手工将自动提交关闭,通过commit方法进行提交,rollback方法进行回滚,如果不提交,则数据不会真正的插入到数据库中。

Hibernate中是通过Transaction进行事务管理,处理方法与JDBC中类似。

Spring中也有自己的事务管理机制,使用TransactionMananger进行管理,可以通过Spring的注入来完成此功能。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-12
---------------------------------------------------------
这个问题我以前回答过别人的,请参考http://zhidao.baidu.com/question/191543132.html

有不明白的地方,直接百度HI 我吧

Spring提供的事务管理可以分为两类:编程式的和声明式的。

编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活方便。

1、传统使用JDBC的事务管理

以往使用JDBC进行数据操作,使用DataSource,从数据源中得到Connection,我们知道数据源是线程安全的,而连接不是线程安全的,所以对每个请求都是从数据源中重新取出一个连接。一般的数据源由容器进行管理,包括连接池。例如TOMCAT,WEBSPHERE,WEBLOGIC等这些J2EE商业容器都提供了这个功能。

以往的我们使用JDBC在写代码时,事务管理可能会是这样:

Connection conn = null;
try{
conn = DBConnectionFactory.getConnection;
conn.setAutoCommit(false);
//do something
conn.commit(); //commit transcation
}catch(Exception e){
conn.rollback();
}
finally{
try{
conn.close();
} catch(SQLException se){ //do sth.}
//close ResultSet,PreparedStatement,Connection
//notice:Maybe ocurr Exception when u close rs,pstmt,conn
}

按照以往的思路来写代码,代码量比较长,而且容易疏忽,忘掉一些try/catch,引发一些异常无法catch,虽然有时候我们会写DBTool类,来关闭这些资源,并且保证在关闭这些资源时,不向外抛异常,但是这样做会导致额外的麻烦。

2、Spring提供的编程式的事务处理

Spring提供了几个关于事务处理的类:TransactionDefinition //事务属性定义

TranscationStatus //代表了当前的事务,可以提交,回滚。

PlatformTransactionManager这个是spring提供的用于管理事务的基础接口,其下有一个实现的抽象类AbstractPlatformTransactionManager,我们使用的事务管理类例如DataSourceTransactionManager等都是这个类的子类。

我们使用编程式的事务管理流程可能如下:

(1) 声明数据源。

(2) 声明一个事务管理类,例如:DataSourceTransactionManager,HibernateTransactionManger,JTATransactionManager等

(3) 在我们的代码中加入事务处理代码:

TransactionDefinition td = new TransactionDefinition();
TransactionStatus ts = transactionManager.getTransaction(td);
try{
//do sth
transactionManager.commit(ts);
}catch(Exception e){transactionManager.rollback(ts);}

使用Spring提供的事务模板TransactionTemplate:

void add()
{
transactionTemplate.execute( new TransactionCallback(){
pulic Object doInTransaction(TransactionStatus ts)
{ //do sth}
}
}

TransactionTemplate也是为我们省去了部分事务提交、回滚代码;定义事务模板时,需注入事务管理对象。

3、Spring声明式事务处理

Spring声明式事务处理也主要使用了IoC,AOP思想,提供了TransactionInterceptor拦截器和常用的代理类TransactionProxyFactoryBean,可以直接对组件进行事务代理。

使用TransactionInterceptor的步骤:

(1)定义数据源,事务管理类

(2)定义事务拦截器,例如:

<bean id =
第2个回答  推荐于2016-05-28
Java种运用了大量的事务管理,就是对一系列的数据库操作进行统一的提交或回滚操作,比如说做一个转账功能,要更改帐户两边的数据,这时候就必须要用事务才能算是严谨的做法。要么成功,要么失败,保持数据一致性。如果中间有一个操作出现异常,那么回滚之前的所有操作。
在strut2框架中为了避免多个用户同时访问服务器,都会使用事务管理来管理访问的人数。

事务管理的意义
问题一:Java 编程 ,事务管理的作用 事务就是对一系列的数据库操作进行一的提交或回滚操作,比如说做一个转账功能,要更改帐户两边的数据,这时候就必须要用事务才能算是严谨的做法。要么成功,要么失败,保持数据一致性。如果中间有一个操作出现异常,那么回滚之前的所有操作。 这样有什么好处呢。 这样可以防止在一些意...

Java开发必读!深入解读@Transactional事务注解
1. 定义与作用 Transactional是Spring提供的一个注解,用于标识方法或类的事务属性。通过这个注解,我们可以轻松定义事务的传播行为、隔离级别、超时时间和回滚规则,从而确保操作的原子性、一致性、隔离性和持久性(ACID)。2. 使用场景 Transactional适用于需要事务管理的操作,如银行转账、订单处理等。它可以...

java如何进行事务管理,什么时候用事务控制
Java种运用了大量的事务管理,就是对一系列的数据库操作进行统一的提交或回滚操作,比如说做一个转账功能,要更改帐户两边的数据,这时候就必须要用事务才能算是严谨的做法。要么成功,要么失败,保持数据一致性。如果中间有一个操作出现异常,那么回滚之前的所有操作。在strut2框架中为了避免多个用户同时访问...

在java中,事务是什么?有什么用!
务管理,我们可以通过EJB容器提供的容器事务管理机制(CMT)完成同一个功能,这项功能由J2EE应用服务器提供。这使得我们可以简单的指定将哪个方 法加入事务,一旦指定,容器将负责事务管理任务。这是我们土建的解决方式,因为通过这种方式我们可以将事务代码排除在逻辑编码之外,同时将所有困难交给 J2EE容器去解...

java中什么是事物
在Java编程中,事务通常通过编程语言提供的API来管理。例如,使用JDBC时,可以通过设置事务的隔离级别和手动调用开始和提交事务的方法来实现。此外,还可以使用Spring框架中的事务管理器,通过配置事务管理策略,简化事务的管理和控制。总之,事务机制在确保数据库操作的可靠性和一致性方面起着至关重要的作用。

Spring事务(Transaction)管理高级篇一栈式解决开发中遇到的事务问题
深入理解Spring事务管理 Spring,作为Java开发中广受欢迎的框架,其事务管理功能在日常开发中起到了举足轻重的作用。然而,许多开发者对事务的原理理解不够深入,导致在遇到事务相关问题时,解决过程往往冗长且复杂。本文将带你逐步探索Spring事务管理的高级特性,揭示其原理,并针对开发中常见的事务问题提供解决...

编程式事务、声明式事务
在Spring框架中,事务管理方式分为编程式和声明式两种,它们各有特点,适用于不同的场景。首先,让我们深入探讨声明式事务的魅力,它通过巧妙地使用@Transactional注解,为开发者提供了一种简洁的事务处理方式。然而,这种简化并非无懈可击,对于非public方法、注解配置不当以及类内方法的调用,可能导致事务的...

什么叫事务?
在实际编程中,事务通常由高级语言如SQL、C++或Java编写的用户程序触发,通过begin transaction和end transaction语句或者相应的函数调用来界定其执行范围。事务在数据库管理中扮演着关键角色,它保证了在事务开始到结束的期间内,所有操作要么全部完成,要么全部回滚,以维护数据的一致性。事务的四大特性,原子性...

java中间件有哪些
Java中间件主要有:消息中间件、事务中间件、数据网格中间件、应用服务器中间件等。消息中间件:主要作用是处理大量的消息传递和转换。这种中间件使用范围非常广,它们实现了软件内部各部分之间协同工作所需的异步通信,在企业系统信息整合方面具有核心作用。消息中间件常见的有Apache Kafka、RabbitMQ等。这些...

编程式事务?
编程式事务就是指通过硬编码的方式做事务处理,这种处理方式需要写代码,事务中的逻辑可以自己定制;可以是数据库的东东,也可以是其他的操作。。程式事务管理:需要你在代码中手动得到会话,开启事务,提交事务,关闭会话。声明式事务管理:现在一般用spring管理事务,在xml中配置好之后,在方法或者类上,...

相似回答