Spring事务管理

事务管理

事务是数据库自身提供的保障数据一致性的功能(转账,下订单)

事务可以看作是由数据库若干操作组成的一个单元(一次交互包含多个操作)

关系型数据库事物的基本特征:
1.原子性特征:一个事务中的多条sql都执行或者都不执行
2.隔离性
3.持久性
4.一致性

spring框架里面提供事务管理功能:

spring框架把提交事务的功能管理起来

spring中的事务管理有两种:

1.编程式事务管理.
在代码中自己写

2.声明式事务管理.
使用注解标签实现底层实现原理是AOP思想 方法级别,在执行某个方法时,为方法额外添加事务管理功能

两种实现方式:
基于 xml 配置

基于注解实现

配置事务管理器

<!-- 配置 spring 事务管理类, 并注入数据源 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

 注解方式

 <!--开启注解事务管理 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

在 service 中控制事务,添加注解标记

@Service(value="userservice")

@Transactional

声明式事务不生效的场景:

1.@Transactional 应用在非 public 修饰的方法上
2.异常被 catch 捕获导致失效
3.出现编译期异常
4.@Transactional 事务传播行为设置错误
5.数据库引擎不支持事务
6.同一个类中,使用非代理对象调用一个有事务的方法,导致事务错误

注:
3.默认情况下,出现编译期异常,事务不生效,可通过下面设置为全部异常事务都生效

@Transactional(rollbackFor = RuntimeException.class)---->
@Transactional(rollbackFor = Exception.class)

4.
5.数据库引擎是mysql底层的一种数据处理实现的机制.常用的两个引擎:innodb(支持事务功能),myisam(不支持事务).在数据库中右键表单,选择改变表可以修改表的引擎
6.在一个非事务方法中使用了this.相当于自己new了一个对象,没有被spring增强过

相关知识点:
一.访问权限修饰符:
public :公共权限 修饰类、属性、方法。可以被任意类访问。
protected:受保护的权限 修饰属性、方法。 可以被同包类或者该类的子类访问。
default(空,默认):同包权限 修饰类、属性、方法。只能被同包的类访问。
private:私有权限 修饰属性、方法。 只能在本类中访问。
二.编译期异常和运行期异常:
运行期异常:程序运行时抛除的异常,所有RuntimeException的子类都是运行期异常。
1.数学异常. 2.空指针异常. 3.数组下标越界. ……
编译期异常(Checked Exception):除去运行期的异常都是编译期异常,也称为检测异常。 1.IOException. 2. SQLException. ...…
实例:utf--8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值