0 0

请问为什么用spring事务管理? 20

请问为什么用spring事务管理?

好像我不用spring事务管理的话,好像也不回出现什么异常情况吗

问题补充:
gdfloyd 写道
有利于代码重用,特别是dao代码的重用。事务往往和业务规紧密关联,当业务逻辑发生改变,意味着dao的大幅度改动。系统规模达到一定程度,修改风险相当大。Spring的好处是不更改现有的dao,仅需对现有的service bean 进行配置就达到事务效果了。同时,把事务统一在service层,系统结构更清晰


我觉得事务是数据库的事情,不是程序的事情,所以觉得没有必要用spring事务管理。  但是看了你讲的之后觉得很有道理,请再具体一点可以吗?

问题补充:
pipilu 写道
楼主貌似从来不在service层使用事务?!

用过,但是不知道为什么用?

问题补充:
risemanjavaeye 写道
不知道楼主的意思是不用事务,还是不用spring来做事务?
应用层面的事务是在业务级的,这种事务数据库管不着。要是一个应用没有事务,自己点点刷刷是没有问题的,但真正到生产环境中就不一定行了。
比如你去银行取钱,银行把钱给你,然后在你帐户中把你的余额修改,这是一个事务的,能保证你拿到钱后去你再去查你的帐户,你能立刻看到你的账户余额减少,如果没有事务,你可能去查看到的余额没有变,你会有什么感觉。这只是很简章的一方面。至于用不用spring来管理,那就是你自己的事情了。

我一直觉得事务是数据库的事情,为啥要用spring来管理呢

问题补充:
julycool 写道
我补充三点:
1、hibernate因为有一个flush功能,这个在flush时才会真正执行相关SQL,所以hibernate自己实现了一套事务,这个是有别于我们简单的使用jdbc的事务的,使用spring的事务可以兼顾jdbc与hibernate的情况;
2、可以使用spring做隐式事务,直接在配置文件中声明事务,这样大多通用操作不需要程序员关心事务问题,减轻错误机率;
3、说事务是数据库的事情那是从数据库编写存储过程的角度出发的,在编写存储过程时会有数据库的一套事务,我们常说的事务应该是基于jdbc的;
不要认为事务就是数据库事务,这样理解不正确,比如你持久的地方一个是物理卡,一个是数据库,那保证物理卡与数据库的数据一致难道就不是事务了么?


请问什么是物理卡,能给我一个例子说明,不用spring事务会导致什么问题吗?

问题补充:
peijunlin2008 写道
我觉得事务是数据库的事情,不是程序的事情,所以觉得没有必要用spring事务管理。 事务是根据你的业务来定的怎么能说是数据库的事?


你是说如果数据根据业务流程来吗,同一个数据流程中的东西一起提交或者说一起失败?
2010年2月11日 09:23

27个答案 按时间排序 按投票排序

0 0

上面的两个sql从业务上说必须要么都执行,要不都不执行。

2010年2月26日 17:30
0 0

直白一点解答楼主的疑惑吧。
事务确实是数据库的事情,但是我们得要把事务的起点和终点告诉数据库吧。
如果你直接使用jdbc的话就会需要如下类似的代码:

try{   
  conn=DriverManager.getConnection("jdbc:odbc:grade");   
  defaultCommit=conn.getAutoCommit();   
  conn.setAutoCommit(false);   
  stmt=conn.createStatement();   
  stmt.executeUpdate(strSQL1);   
  stmt.executeUpdate(strSQL2);   
  conn.commit();   
  }   
  catch(Exception   e){   
  conn.rollback();   
  e.printStackTrace();   
  }   
  finally{   
  conn.setAutoCommit(defaultCommit);   
  if(stmt!=null){   
        stmt.close();     
  }   
  if(conn!=null){   
        stmt.close();   
  }   
  }

就是将自动提交设为false之后,连续的几个数据库操作,如果成功的话,则提交完成一个事务,如果某个发生异常,则回滚。

而Spring的失误处理,底层也就是这样的,只是spring的方式给程序员提供了便捷,AOP,让程序员不要在关心这些重复的try catch ,只需要关心业务代码。

哈哈接分。

2010年2月26日 17:27
0 0

关键还是个粒度问题吧,
有时候我们的操作有业务上的事务,
比如a操作和b操作必须保证原子性。
那么就需要使用事务了。
当然你自己用jdbc来写也是可以的,只是没有spring配置这么优雅灵活。

2010年2月26日 17:16
0 0

我说的是指业务级别上的“事务”,数据库事务级别使用默认即可!除非某些特殊项目需要修改数据库的事务级别。不过,数据库的事务级别也可以通过Spring来控制的!

2010年2月25日 17:58
0 0

sorry,这里打字打的太顺手,我这里说的物理的卡就是比如说银行卡、公交卡这些非数据库的;

2010年2月25日 17:44
0 0

2010年2月25日 15:02
0 0

spring的事务管理,aop拦截技术,以及依赖注入是目前应用spring的主要原因。目的是使项目开发的耦合度降低

2010年2月25日 12:56
0 0

我补充三点:
1、hibernate因为有一个flush功能,这个在flush时才会真正执行相关SQL,所以hibernate自己实现了一套事务,这个是有别于我们简单的使用jdbc的事务的,使用spring的事务可以兼顾jdbc与hibernate的情况;
2、可以使用spring做隐式事务,直接在配置文件中声明事务,这样大多通用操作不需要程序员关心事务问题,减轻错误机率;
3、说事务是数据库的事情那是从数据库编写存储过程的角度出发的,在编写存储过程时会有数据库的一套事务,我们常说的事务应该是基于jdbc的;
不要认为事务就是数据库事务,这样理解不正确,比如你持久的地方一个是物理卡,一个是数据库,那保证物理卡与数据库的数据一致难道就不是事务了么?

2010年2月25日 12:46
0 0

在你的理解里事务是什么?应用级事务和数据库级事务又是什么?我说的那个例子没有让你感觉到事务的存在吗以及他和数据库的关系,也许我们对事务的理解不一样,所以没有说到一个点上

2010年2月25日 12:03
0 0

我觉得事务是数据库的事情,不是程序的事情,所以觉得没有必要用spring事务管理。 事务是根据你的业务来定的怎么能说是数据库的事?

2010年2月25日 09:59
0 0

spring 管理事务,是利用了spring的aop通过拦截器,对事务,进行动态管理,这样创建事务管理对象,不是硬编码实现,而是通过spring容器进行管理,使程序各个部分之间少了耦合。

2010年2月24日 23:26
0 0

不知道楼主的意思是不用事务,还是不用spring来做事务?
应用层面的事务是在业务级的,这种事务数据库管不着。要是一个应用没有事务,自己点点刷刷是没有问题的,但真正到生产环境中就不一定行了。
比如你去银行取钱,银行把钱给你,然后在你帐户中把你的余额修改,这是一个事务的,能保证你拿到钱后去你再去查你的帐户,你能立刻看到你的账户余额减少,如果没有事务,你可能去查看到的余额没有变,你会有什么感觉。这只是很简章的一方面。至于用不用spring来管理,那就是你自己的事情了。

2010年2月24日 12:00
0 0

就是方便了。举个例子,假如你有十个方法都是用来操作数据库的,那你是不是要将事务开启,关闭,回滚等一些操作写个十遍,当然你可能会使用模板方法,但是它还是要你自己写这些关于事务开启,关闭,回滚的代码的。用spring事务管理,你就不用写这些代码了,它会在你执行方法之前自动开启事务,结束关闭事务。

2010年2月23日 19:27
0 0

没事务不报异常?那是因为你没真正用到,,有事务可以回滚,,如果处理到一半一些数据已经加入到数据库,一些还没有加入时就出现异常???这时候你看下有没有问题。。。。

2010年2月23日 17:21
0 0

2010年2月22日 16:40
0 0

个人认为是给你一个管理事务的“标准”!方便了,规范了!

2010年2月22日 16:16
0 0

楼主貌似从来不在service层使用事务?!

2010年2月22日 14:14
0 0

首先说不用事务管理会发生异常的。例如在取款机取钱,你取5000元,输入了金额,但是取款机没这么多钱,却照样扣了你5000元。这样你就会损失了。有了事务,事务具有acid特性,要么把事件都执行,要么都不执行。这时候上述情况就不会发生。当然,spring管理事务有很多优点,是轻量级的,出现异常自动回滚,自动提交。一般把事务配置在业务层。

2010年2月22日 09:16
0 0

事务都是放在service层的,
使用spring来管理事务的话,可以把事务代码抽取出来,
这样的话,service层的代码简洁了,同时也降低了耦合度。
这一点对大项目来说尤其重要的。

aop确实是强大。

2010年2月21日 17:13
0 0

同意楼上的回答! 

2010年2月20日 14:03
0 0

逻辑可以用在存贮过程里,那样在移植的时候,会出现问题!当然不涉及移植的,就都一样!写在代码里,用spring的事务管理,简单,高效!灵活使用就行了。

2010年2月20日 13:32
0 0

事务往往和业务规紧密关联,用sql把业务逻辑写在procedure,funtion就所谓是数据库的事情,用java把业务逻辑写在代码里就所谓是程序的事情。把事务交给spring来管理,就把业务逻辑一定程度从sql和java代码中分离出来,放在配置文件/注解来统一管理,从而实现了系统的低耦合高伸缩

2010年2月20日 09:15
0 0

你也可以用ejb容器来管理,但是spring是轻量级的,方便

2010年2月11日 13:53
0 0

用了spring之后事务管理变的更加灵活,无需使用代码,以后更改事务级别也很方便。

2010年2月11日 13:26
0 0

这个问题就跟为什么要用spring框架一样。。。

2010年2月11日 12:22
0 0

有利于代码重用,特别是dao代码的重用。事务往往和业务规紧密关联,当业务逻辑发生改变,意味着dao的大幅度改动。系统规模达到一定程度,修改风险相当大。Spring的好处是不更改现有的dao,仅需对现有的service bean 进行配置就达到事务效果了。同时,把事务统一在service层,系统结构更清晰

2010年2月11日 10:43
0 0


个人认为:

Spring的事务管理是管理的是数据库事务。你自己控制事务也可以。但是代码繁琐。

2010年2月11日 10:21

相关推荐

    Spring事务管理Demo

    Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 ...

    Spring事务管理开发必备jar包

    在Spring框架中,事务管理是实现业务...综上所述,这个资源包涵盖了Spring事务管理开发的各个方面,从基础框架到具体实现,为开发者提供了全面的支持。理解并掌握这些知识点,将有助于构建稳定、健壮的事务处理系统。

    spring 自定义事务管理器,编程式事务,声明式事务@Transactional使用

    在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。本教程将深入探讨如何在Spring中实现自定义事务管理器...这将加深你对Spring事务管理的理解,帮助你在实际项目中更加熟练地运用这些技术。

    spring 事务管理的理解

    Spring 框架是Java开发中...理解并熟练掌握Spring事务管理,对于提升应用程序的稳定性和可靠性至关重要。在实际开发中,结合声明式事务管理、事务传播行为、隔离级别和回滚规则,可以有效地确保数据的完整性和一致性。

    Spring事务管理的jar包

    本篇将深入探讨Spring事务管理的核心概念、工作原理以及如何使用`spring-tx-3.2.0.RELEASE.jar`这个jar包。 首先,我们需要理解什么是事务。在数据库系统中,事务是一组操作,这些操作被视为一个整体,要么全部完成...

    实验 spring 声明事务

    实验 "Spring 声明事务" 是 Java 高级编程中的一个重要环节,旨在让学生掌握 Spring 框架中声明式事务管理的配置和使用。在实际应用中,事务管理是确保数据一致性、完整性和可靠性的关键组件。Spring 提供了声明式...

    spring_如何管理事务的

    #### 一、Spring事务管理概述 Spring框架为开发者提供了一套强大的事务管理机制,它简化了应用程序中的事务控制逻辑,使得开发人员能够更加专注于业务逻辑的编写,而不是繁琐的事务管理代码。Spring支持两种类型的...

    spring事务管理5种方法

    本篇文章将深入探讨Spring事务管理的五种方法,旨在帮助开发者更好地理解和运用这一核心特性。 首先,我们来了解什么是事务。在数据库操作中,事务是一组逻辑操作,这些操作要么全部成功,要么全部失败,确保数据的...

    spring事务管理

    ### Spring事务管理详解 #### 一、Spring事务管理概述 Spring框架提供了强大的事务管理功能,使得开发者能够更方便地管理应用程序中的事务。Spring事务管理主要包括两种类型:编程式事务管理和声明式事务管理。 -...

    Spring事务管理.pdf

    Spring事务管理.pdf 1.资料 2.本地事务与分布式事务 3.编程式模型 4.宣告式模型

    spring事务操作试验

    首先,Spring事务管理的核心概念是ACID(原子性、一致性、隔离性和持久性),这是所有事务系统的基础。在Spring中,事务管理分为两种模式:声明式事务管理和编程式事务管理。声明式事务管理通过配置元数据(如XML或...

    spring3.0两种事务管理配置

    这种方法只需要在 Spring 配置文件中定义一个事务管理对象(如 DataSourceTransactionManager),然后加入 `<tx:annotation-driven/>` 节点,引用该事务管理对象,然后即可在需要进行事务处理的类和方法使用 `@...

    Spring的事务管理小案例

    在本文中,我们将深入探讨Spring框架中的事务管理。Spring是一个广泛应用的Java企业级应用开发框架,它提供...如果你想要深入了解,可以参考提供的博客链接或其他相关资料,进一步学习Spring事务管理的细节和最佳实践。

    Spring JDBC与事务管理

    3、了解Spring事务管理的3个核心接口; 4、了解Spring事务管理的两种方式; 5、掌握基于XML和Annotation的声明式事务管理的使用。 二.实验内容 (1)使用Spring JDBC实现书店的购书过程,即有如下一个BookShopDao接口...

    全面分析_Spring_的编程式事务管理及声明式事务管理

    Spring 框架的事务管理是其核心特性之一,它为开发者提供了强大的支持,确保了在多线程和并发环境中数据的一致性和完整性。本教程将深入探讨 Spring 的编程式事务管理和声明式事务管理,帮助你理解这两种方式的差异...

    Spring事务流程图

    Spring事务管理是Spring框架的核心特性之一,主要用于处理应用程序中的数据一致性问题。在Spring中,事务管理分为编程式和声明式两种方式。本篇文章将详细解释Spring事务管理的流程,以及如何通过时序图来理解这一...

    Synchronized锁在Spring事务管理下线程不安全

    Synchronized锁在Spring事务管理下,导致线程不安全。

Global site tag (gtag.js) - Google Analytics