.1)使用注解实现声明式事务
1.目标:通过事务 使以下方法 要么全部成功 要么全部失败
public void addStudent(){ //增加班级 //增加学生 //crud }
2.导入相关的jar包
<!-- https://mvnrepository.com/artifact/aopalliance/aopalliance --> <dependency> <groupId>aopalliance</groupId> <artifactId>aopalliance</artifactId> <version>1.0</version> </dependency> <!--mysql驱动包--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <!--连接池使用数据源--> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <!--连接池--> <!-- https://mvnrepository.com/artifact/commons-pool/commons-pool --> <dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> <version>1.6</version> </dependency> 还有几个spring自带的 spring-jdbc-4.3.9.RELEASE.jar spring-tx-4.3.9.RELEASE.jar
3.编写配置文件
3.1 增加事务tx的命名空间
xmlns:tx="http://www.springframework.org/schema/tx"
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
3.2 增加对事务的支持
<tx:annotation-driven transaction-manager="txManager"/>
3.2.1 配置事务管理器
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean>
3.2.1.1 配置数据源相关
<!-- 配置数据库相关-事务--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <!-- 配置驱动包--> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <!-- 配置连接地址--> <property name="url" value="jdbc:mysql://localhost:3306/ssm"></property> <!-- 配置用户名--> <property name="username" value="root"></property> <!-- 配置密码--> <property name="password" value="root"></property> <!-- 最大连接时间--> <property name="maxActive" value="10"></property> <!-- 最大空闲时间--> <property name="maxIdle" value="6"></property> </bean>
4.将需要 成为事务的方法 前增加注解:
@Transactional(readOnly = false,propagation = Propagation.REQUIRED) @Override public void addStudent(Student student) { iStudentDao.addStudent(new Student()); }
4.1 readOnly的详细说明
4.2 propagation事务传播行为的详细说明