美文网首页
Spring中使用数据库事务

Spring中使用数据库事务

作者: 起名字是很难的一件事 | 来源:发表于2018-11-26 15:44 被阅读0次

    简单说一下,在Spring使用事务的两种方式,即xml方式和注解方式。

    注解方式:

    直接进入正题,我们知道要想还用数据库事务首先得有一个数据源,这里我们就使用DBCP的数据源,使用DBCP的数据源需要用到它的实现类BasicDataSource,我们可以在这个类中进行一些基本的配置,如下所示

    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">

        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>

        <property name="url" value="jdbc:mysql://localhost:3306/test"/>

        <property name="username" value="root"/>

        <property name="password" value="123456"/>

    </bean>

    我们可以根据需要换成自己电脑上的配置。有了数据源以后,需要注册一个平台事务管理器,这里我们使用的是DatasourceTransactionManager这个类,并将数据源注入这个类当中

    <!-- 事务管理器配置数据源事务 -->

      <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSource

      TransactionManager">

        <property name="datSource" ref="dataSource"/>

      </bean>

    这时我们就可以使用注解来定义事务了,如下面这段代码所示:

    <!-- 使用注解定义事务 -->

      <tx:annotation-driven transaction-manager="transactionManager"/>

    配置好了这些以后,就可以在service层当中使用@Transactional注解来使用事务了,我们可以在这个注解当中添加属性 propagation(传播行为)和Isolation(事务的隔离级别)在这里我就不介绍那么具体了,propagation属性可以设置为Propagation.REQUIRED,而isolation属性可以设置为isolation.READ_COMMITTED,这样就配置好事务了。

    XML方式:

    使用xml方式与注解方式不同的一点就是,这这种方式是在xml文件中进行配置的,比较容易理解。具体如下:

    大体按照上面的配置,这里把  <tx:annotation-driven transaction-manager="transactionManager"/>这句话删掉,替换为如下代码:

    <tx:advice id="txAdvice" transaction-manager="transactionManager">

          <tx:attributes>

              <tx:method name="xxx" isolation="DEFAULT" propagation="REQUIRED" />

          </tx:attributes>

      </tx:advice>

      <aop:config>

          <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.aspectj..*.*(..))"/>

      </aop:config>

    其中xxx代表哪个方法要使用此事务,这种方式与注解方式效果一致。

    相关文章

      网友评论

          本文标题:Spring中使用数据库事务

          本文链接:https://www.haomeiwen.com/subject/tmebqqtx.html