在项目开发中需要用到手动事务进行控制。现说下遇到的问题以及解决方案:
如果程序需要使用嵌套事务,则需要在配置文件中添加一个配置属性,如下:
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
<property name="nestedTransactionAllowed" value="true"/>
</bean>
如果需要手动事务进行控制,可以使用PlatformTransactionManager代码如下
DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_NESTED); PlatformTransactionManager txManager = (PlatformTransactionManager) BeanLocator.getInstance().getBean("transactionManager"); TransactionStatus transactionStatus = txManager.getTransaction(def); try { } catch (Exception e) { logger.error("处理基地同步结算单出错" + settlement.toString(), e); txManager.rollback(transactionStatus); throw new XmlHttpException(IoddConstant.PRM_OTHER_ERROR,"处理发布结算单消息失败"); }
如果是结合声明式事务进行控制,可以使用下面代码:
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
相关推荐
注意:只是jdbc自带的jdbctample,不能 用于整合mybatis框架的事务,我整合了,事务不起作用!!!! 按老师的说法是基于xml方式,但不准确,因为也用到了注解 <aop:aspectj-autoproxy proxy-target-class="true">...
这种方式灵活性高,但容易导致事务控制代码与业务逻辑混淆,不易维护。 2. **声明式事务管理**:这是Spring最常用的方式,通过在配置文件或者使用`@Transactional`注解来定义事务边界,使得事务管理与业务逻辑分离...
Spring 提供了声明式事务管理,允许开发者在不编写事务管理代码的情况下实现事务控制,极大地简化了事务处理。 实验环境主要包括 Eclipse 或 MyEclipse 开发工具,以及 Spring 4.0 及以上版本,JDK 1.7 及以上版本...
案例中的"springStudy04_transaction"可能包含了一个使用Spring进行事务管理的简单应用程序,其中可能包括了数据库连接配置、数据访问对象(DAO)的实现以及事务控制的代码。你可以通过阅读源代码来了解如何在实际...
Spring 声明事务是指使用 Spring 框架来管理事务,实现事务控制。声明式事务管理是建立在 AOP 之上的,它的本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行...
本教程将深入探讨如何在Spring框架中利用`TransactionInterceptor`进行声明式事务管理,与Hibernate集成实现高效的数据库事务控制。 首先,了解事务管理是至关重要的。事务是一组数据库操作,这些操作要么全部成功...
同时,你可以定义自定义的事务注解,以实现更灵活的事务控制。 例如,假设你创建了一个名为`CustomTransactionManager`的类,你可以这样使用自定义事务注解: ```java @Retention(RetentionPolicy.RUNTIME) @...
然而,单纯使用`JdbcTemplate`进行数据库操作时,并不能自动管理事务,因此我们需要了解如何通过`JdbcTemplate`结合Spring框架来实现事务控制。 #### 二、原生 JDBC 的事务控制 在没有使用任何框架的情况下,我们...
1. **编程式事务管理**:这种管理方式要求开发者手动编写代码来开启、提交、回滚事务。虽然具有更高的灵活性,但可能导致代码的复杂性增加,不易于维护。在Spring 2.0中,可以使用`PlatformTransactionManager`接口...
在Java后端开发中,Spring的事务管理机制大大简化了事务控制,使得开发者可以更专注于业务逻辑,而不用关心底层事务的管理。通过声明式事务管理,我们只需在方法上添加@Transactional注解,而无需编写手动的try-...
在使用Spring的事务管理功能之后,开发者无需手动编写上述事务控制的代码,这些工作将由Spring框架自动完成。具体来说,Spring通过以下步骤实现事务管理: 1. **开启注解驱动**:在配置文件中开启注解驱动,并在...
在Spring配置文件中,我们需要开启事务管理器,并在需要事务控制的Service层方法上添加`@Transactional`注解。这个注解允许我们指定事务的传播行为(如REQUIRED、REQUIRES_NEW等)、隔离级别(如READ_COMMITTED、...
在Spring Boot中,数据库事务控制是实现业务逻辑一致性的重要手段。本资料主要围绕Spring Boot如何进行数据库事务管理进行深入探讨。 首先,我们需要了解什么是事务。事务是数据库操作的基本单位,它保证了一组...
本篇文章我们将深入探讨Spring JDBC事务控制,这是Spring框架中处理数据持久化的一个关键特性。Spring JDBC提供了对数据库事务的高级封装,使得开发者能够方便、高效地管理事务,而无需过多关注底层实现细节。 首先...
对比 Java 中的事务管理,通常指的是 JDBC 的事务管理,需要手动调用 Connection 对象的 commit() 和 rollback() 方法。这种方式完全由开发者控制,灵活性高但容易出错,且事务管理代码会与业务代码混合在一起。 ...
通过分析这个文件,我们可以看到如何将AOP和事务管理结合起来,实现对数据库操作的事务控制,以及在特定操作前后执行自定义逻辑。 总结来说,Spring事务机制和AOP是Java开发中的重要工具,它们帮助我们构建可维护、...
`TransactionTemplate`的使用可以让你在没有AOP的情况下享受到事务管理的便利,同时避免了手动管理事务的复杂性。它提供了一种灵活的方式来控制事务的开始、提交和回滚,使得代码更加清晰和易于测试。 在`...
本教程将深入探讨如何在Spring4、SpringMVC和MyBatis集成环境下实现事务控制。 首先,让我们了解这三个组件的基本概念: 1. **Spring4**:Spring是一个开源的Java平台,它提供了全面的企业级应用开发解决方案,...
#### Spring事务控制的基础概念 Spring框架支持两种类型的事务管理:编程式事务管理和声明式事务管理。 - **编程式事务管理**:通过编码的方式来管理事务,适用于需要细粒度控制的情况。 - **声明式事务管理**:...
手动调用`TransactionTemplate`或在方法上添加注解来开启和提交事务,适用于简单的事务处理。 2. **声明式事务管理** - 更常见的做法是使用`@Transactional`注解,Spring AOP会在方法执行前后自动处理事务的开始、...