Spring中使用数据库事务

简单说一下,在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 事务属性分析 事务管理对于企业应用而言至关重要。它保证了用户的每一次操作都是可靠的,即便出现了异常的...
    壹点零阅读 1,330评论 0 2
  • 一.声明式事务实现 将编程式事务章节中applicationContext.xml修改下: 声明式事务通过AOP代...
    zlb阅读 1,007评论 0 1
  • 这部分的参考文档涉及数据访问和数据访问层和业务或服务层之间的交互。 Spring的综合事务管理支持覆盖很多细节,然...
    竹天亮阅读 1,053评论 0 0
  • aop配置和事务的配置 环境 jdk1.7 tomcat7.0 spring3.1.1 hibernate4.1....
    playman阅读 1,357评论 0 2
  • 脉轮舞动三天,给我最大的体验就是针对性的运动达到人体极限,通过高强度的运动来震动身体的细胞甚至分子来激活每个细胞,...
    阿纹_f348阅读 553评论 0 0