Spring中使用数据库事务

2018-11-26  本文已影响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代表哪个方法要使用此事务,这种方式与注解方式效果一致。

上一篇下一篇

猜你喜欢

热点阅读