事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败,事务有四个特性:原子性、一致性、隔离性、持久性。
事务添加到JavaEE三层结构里面Service层(业务逻辑层);在spring进行事务管理操作,有两种方式:编程式事务管理和声明式事务管理(使用);声明式事务管理是基于注解方式和基于xml配置文件方式;
1、在 spring 配置文件配置事务管理器
<!--创建事务管理-->
<bean id=”transactionManager”
Class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<!--注入数据源-->
<property name=”dataSource” ref=”dataSource”></ property>
</bean>
2、开启事务注解
<!--开启事务注解-->
<tx:annotation-driven transaction-manager=”transactionManager”>
</tx:annotation-driven>
在service类上面(或者service类里面方法上面)添加事务注解;@Transactional,这个注解添加到泪上面,也可以添加方法上面;如果把这个注解添加类上面,这个类里面所有的方法都添加事务;如果把这个注解添加方法上面,为这个方法添加事务。
事务隔离级别:ioslation:事务有特性称为隔离性,多事务操作之间不会产生影响,不考虑隔离性产生很多问题;
有三个读问题:脏读、不可重复读、虚(幻)读 ;
脏读:一个未提交事务读取到另一个未提交事务的数据;虚读:一个未提交事务读取到另一提交事务添加数据。
timeout:超时时间 :事务需要在一定时间内进行提交,如果不提交进行回滚 ;默认值是 -1 ,设置时间以秒单位进行计算。
readOnly:是否只读 读:查询操作,写:添加修改删除操作 readOnly 默认值 false,表示可以查询,可以添加修改删除操作 设置 readOnly 值是 true,设置成 true 之后,只能查询。