spring-JDBC事务管理

Spring事务管理(详解+实例)https://blog.csdn.net/trigl/article/details/50968079

Spring中的事务管理详解https://www.cnblogs.com/longshiyVip/p/5061637.html

Spring JDBC-Spring对事务管理的支持https://blog.csdn.net/yangshangwei/article/details/78050480#t8

透彻的掌握 Spring 中@transactional 的使用https://www.ibm.com/developerworks/cn/java/j-master-spring-transactional-use/index.html

新加评论 评论标题:

文章评论

    基于AOP的注解方式

        2019-03-05    
    修改 删除

    通过AOP注释方式一定要开启aop注解 <aop:aspectj-autoproxy proxy-target-class="true" />

    然后开启事务,开启事务后数据源配置的defaultAutoCommit参数无效

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url" value="jdbc:mysql://localhost:3306/test"></property>
        <property name="username" value="root"></property>
        <property name="password" value=""></property>
        <property name="defaultAutoCommit" value="true" />
    </bean>
    
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
    	<property name="dataSource" ref="dataSource"/>
    </bean>
    
    <!-- 配置开启事务 -->
    <!-- 配置事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
    
    

    在需要使用事务的地方使用@Transactional注解

    通过jdbc对数据库的操作:

    @Autowired
    private JdbcTemplate jdbcTemplate;
    
    public void out(String test) {
    	jdbcTemplate.update("insert into inss(test) values(?)",test);
    }

    tx标签配置的拦截器

        2019-03-05    
    修改 删除

    指定事务的切入点。和AOP注解方式的不同只是将AOP注解换成了tx标签配置拦截器。同样需要开启aop 

    <aop:aspectj-autoproxy />
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url" value="jdbc:mysql://localhost:3306/test"></property>
        <property name="username" value="root"></property>
        <property name="password" value=""></property>
        <property name="defaultAutoCommit" value="true" />
    </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
    	<property name="dataSource" ref="dataSource"/>
    </bean>
    
    <!-- 配置开启事务 -->
    <!-- 配置事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    
    <!-- 切面 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes >
            <tx:method name="delete*" propagation="REQUIRED" />
            <tx:method name="insert*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="*" propagation="SUPPORTS" read-only="true"/>
        </tx:attributes>
    </tx:advice>
    <aop:config >
        <aop:pointcut expression="execution(* vip.chencheng.controller.*.*(..))" id="serviceCutPoint"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceCutPoint"/>
    </aop:config>
评论列表
基于AOP的注解方式
tx标签配置的拦截器