0 0

mybatis 事务相关问题5

使用了mybatis后,比如有相关的增删改,这些都是与事务相关的,但是使用mybatis,就是一个接口,接口对应的配置文件,service再去调用这个接口,增删改都是与事务有关,怎么体现事务呢?我觉得我在写程序的过程中好像没有用到事务, 求解
2014年5月24日 15:37

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

0 0

采纳的答案

一般使用Mybaits也就这么几种情况。
(1)单独使用Mybatis不与Spring集成,那么应该这么使用,最原始的方式。

		//这里要传false 手动事务
		SqlSession session = sqlSessionFactory.openSession(false);
		try {
			//插入A表 
			//修改B表
			session.commit();
		} catch (Exception e) {
			session.rollback();
		} finally {
			session.close();
		}

(2)与Spring集成使用,但是没有将事务托管给Spring,一般都是使用SqlSessionTemplate这个类,这种情况在Mybatis执行增删改查以后Mybatis会自动提交事务,关闭session。
  private class SqlSessionInterceptor implements InvocationHandler {
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
      final SqlSession sqlSession = getSqlSession(
          SqlSessionTemplate.this.sqlSessionFactory,
          SqlSessionTemplate.this.executorType,
          SqlSessionTemplate.this.exceptionTranslator);
      try {
        Object result = method.invoke(sqlSession, args);
        if (!isSqlSessionTransactional(sqlSession, SqlSessionTemplate.this.sqlSessionFactory)) {
          // force commit even on non-dirty sessions because some databases require
          // a commit/rollback before calling close()
          sqlSession.commit(true);
        }
        return result;
      } catch (Throwable t) {
        Throwable unwrapped = unwrapThrowable(t);
        if (SqlSessionTemplate.this.exceptionTranslator != null && unwrapped instanceof PersistenceException) {
          Throwable translated = SqlSessionTemplate.this.exceptionTranslator.translateExceptionIfPossible((PersistenceException) unwrapped);
          if (translated != null) {
            unwrapped = translated;
          }
        }
        throw unwrapped;
      } finally {
        closeSqlSession(sqlSession, SqlSessionTemplate.this.sqlSessionFactory);
      }
    }
  }


(3)与Spring集成使用,并且使用了Spring的事物上下文,那么事物会由Spring管理,这与hibernate与Spring集成的事物没有区别,Spring会管理事物。

2014年5月25日 21:10
0 0

一般使用Mybaits也就这么几种情况。
(1)单独使用Mybatis不与Spring集成,那么应该这么使用,最原始的方式。

//注意这里获取session的时候要传参数 false 需要手动事务的意思.
SqlSession session = sqlSessionFactory.openSession(false);
try {
			//插入A表 
			//修改B表
			session.commit();
		} catch (Exception e) {
			session.rollback();
		} finally {
			session.close();
		}

2014年5月25日 21:06
0 0

1.首先要看你的spring 配置文件里面,有没有配置事务管理方式
比如
<!-- 定义事务管理器(声明式的事务) -->  
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*" propagation="REQUIRED" />
        </tx:attributes>
    </tx:advice>
    
    <aop:config>
        <aop:pointcut id="interceptorPointCuts"
            expression="execution(* com.bluesky.spring.dao.*.*(..))" />
        <aop:advisor advice-ref="txAdvice"
            pointcut-ref="interceptorPointCuts" />        
    </aop:config>

这种对整个service或者dao自动aop方式加入事务,或者具体的某个以insert*,update*,delete*等开头的方法配置事务

2.在需要加事务的地方通过注解配置
@Transactional
public void saveUser(..)
类似这样的注解的

现在事务配置更倾向于非侵入式的。

2014年5月24日 15:44

相关推荐

    SpringBoot-Mybatis处理事务

    在SpringBoot框架中整合Mybatis进行事务管理是常见的开发实践,这主要涉及到Spring的声明式事务管理和Mybatis的事务配置。下面将详细讲解这个主题。 首先,SpringBoot简化了Spring的配置,使得开发者可以快速搭建...

    Spring+Mybatis整合事务回滚

    花了一晚上时间终于搞出来了Spring整合Mybatis事务回滚(Mysql数据库),控制Service层中的多次插入操作,多次操作整体是一个事务。 里面有缘嘛和jar包,资源为war包,导入即可。运行Test类中的测试代码即可。 建表...

    springboot mybatis多数据源加事务嵌套

    springboot mybatis多数据源加事务嵌套 事务之间的调用 回滚 亲测可用 定义2个库分别建立 CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户编号', `user_name` varchar(25) ...

    Spring/SpringMVC/MyBatis整合+事务回滚

    在"Spring/SpringMVC/MyBatis整合+事务回滚"的主题中,我们将深入探讨如何将这三个框架整合起来,并实现事务的回滚功能。 首先,Spring框架是核心,它提供了依赖注入(DI)和面向切面编程(AOP)的能力,使得代码更...

    myBatis系列之七:事务管理

    本篇文章将深入探讨MyBatis系列中的第七部分——事务管理,这对于任何使用MyBatis进行数据操作的项目而言都是至关重要的。 事务管理是数据库操作的核心组成部分,它确保了数据的一致性和完整性。在MyBatis中,事务...

    spring+mybatis+事务

    Spring还提供了MyBatis的Dao支持,通过MyBatis-Spring这个桥梁,使得我们可以使用Spring的@Autowired来注入Mapper接口,这样在调用时,Spring会自动帮我们创建SqlSession并执行相关的SQL语句,结束后关闭SqlSession...

    mybatis中的事务的开启

    mybatis中的事务的开启,有利于读者自己配置mybatis参数,实现自己的要求。

    spring与mybatis整合实现事务配置

    1. **引入依赖**:在项目中添加Spring、MyBatis以及数据库驱动的相关jar包,如果使用的是Maven或Gradle,则需在pom.xml或build.gradle中配置相应的依赖。 2. **配置MyBatis**:创建MyBatis的配置文件`mybatis-...

    MyBatis 事务管理解析:颠覆你心中对事务的理解!.docx

    MyBatis 事务管理解析: 在理解 MyBatis 的事务管理之前,首先需要明确事务的基本概念。事务是数据库操作的基本单元...理解这些基本概念,可以帮助开发者更好地控制和调试应用程序的事务行为,避免数据不一致的问题。

    Spring 4 + Mybatis 3 注解事务

    Spring 与 各框架的组各下来,版本就特别的多,针对简单的 使用注解来管理事务的,研究了两天,要不网上...说一下环境 Intellij Idea 15 + Maven + Spring 4.25 + Mybatis 3使用注解的方式,进行的事务回滚,欢迎测试。

    Maven + spring + mybatis + mysql + 事务管理

    在企业级Java开发中,"Maven + Spring + MyBatis + MySQL + 事务管理"是一个常见的技术栈组合,它们各自扮演着不同的角色,构建出高效、稳定的后端系统。 **Maven** 是一个项目管理和综合工具,它帮助开发者管理...

    springboot+redis+mybatis事务和引擎模板

    在本项目中,“springboot+redis+mybatis事务和引擎模板”是一个综合性的Spring Boot应用,它整合了MyBatis和Redis技术,用于实现高效的数据处理和缓存管理。下面将详细阐述其中涉及的关键知识点: 1. **Spring ...

    spring+mybatis的声明式事务

    此外,合理配置事务的隔离级别和回滚规则,能够有效防止并发问题和数据一致性问题。 通过以上内容,你应该对Spring+MyBatis的声明式事务有了较为全面的理解,这将有助于你在实际项目中更好地管理和控制数据库事务。

    MyBatis Spring声明式事务管理示例代码

    Spring的声明式事务管理是采用AOP(Aspect-Oriented Programming,面向切面编程)实现的。在编程式事务管理中,各事务处理代码实际上是相似的,这就造成了代码重复;而且编程式事务管理会造成事务管理代码和被管理的...

    Spring+MyBatis的事务控制

    简单的Spring+MyBastis事务控制代码,包括2个超简单的数据库表,服务代码(同时更新2个表的数据,如果后面的表的处理出错,则事务会回滚),只是简单演示了事务控制功能,其他的没有涉及。测试功能采用JUnit4.

    spring3 struts2 Mybatis3 组件注解 事务注解 实例

    在项目配置中,你需要设置Spring的上下文配置,包括bean的定义、数据源配置、事务管理器配置以及Struts2和Mybatis3的相关配置。Spring的`&lt;tx:annotation-driven&gt;`标签启用注解驱动的事务管理,使`@Transactional`...

    Spring+SpringMVC+Mybatis框架搭建(含事务管理)

    1. 引入相关依赖:在pom.xml文件中添加Spring、SpringMVC、Mybatis和其相应的数据库驱动依赖。 2. 配置Spring:配置Bean定义,包括数据源、事务管理器、Mybatis的SqlSessionFactory等。 3. 配置SpringMVC:设置...

    mybatis demo mybatis 实例

    5.事务管理:MyBatis支持手动和自动的事务管理,可以根据不同的业务需求选择合适的事务控制策略。 6. 与其他框架的集成:MyBatis可以轻松地与Spring等其他框架集成,实现更复杂的系统架构。 在压缩包“MyBatis-...

    Spring Boot+Druid+Mybatis实现JTA分布式事务

    在实际应用中,你可能会遇到的问题包括事务的隔离级别、事务的传播行为、异常处理以及事务的回滚规则等。理解这些概念并正确配置,是确保JTA分布式事务正常运行的关键。 通过以上步骤,你可以在Spring Boot项目中...

    struts2.3+spring3.2+mybatis3.1整合注释行事务处理(含jar包)

    - `pom.xml`:Maven的配置文件,定义了项目依赖,包括Struts2、Spring、MyBatis和其他相关库的版本信息。 这个整合项目的使用和学习可以帮助开发者理解如何在实际项目中集成这三个框架,以及如何利用注解进行事务...

Global site tag (gtag.js) - Google Analytics