使用注解实现事务(声明式事务)
使用@Transactional注解时,可以通过参数配置事务详情
参数名称描述
value用于指定需要使用的事务管理器,默认为“",其别名为transactionManagertransactionManager指定事务的限定符值,可用于确定目标事务管理器,匹配特定的限定值(或者Bean的name值),默认为"",其别名为value。isolation用于指定事务的隔离级别,默认为Isolation.DEFAULT (即底层事务的隔离级别)。noRollbackFor用于指定遇到特定异常时强制不回滚事务。noRollbackForClassName用于指定遇到特定的多个异常时强制不回滚事务。其属性值可以指定多个异常类名。propagation用于指定事务的传播行为,默认为Propagation REQUIRED。read-only用于指定事务是否只读,默认为falserollbackFor用于指定遇到特定异常时强制回滚事务。rollbackForClassNamee用于指定遇到特定的多个异常时强制回滚事务。其属性值可以指定多个异常类名。timeout用于指定事务的超时时长,默认为TransactionDefinition.TIMEOUT_DEFAULT (即底层事务系统的默认时间)。
程序示例
通过事务 使以下方法 要么全成功 要么全失败
public void add Student()
{
}
引入jar包
spring-tx-4.3.9.RELEASE.jarojdbc.jarcommons-dbcp.jar 连接池使用到数据源commons-pool.jar 连接池spring-jdbc-4.3.9.RELEASE.jaraopalliance.jar
增加配置
增加事务tx的命名空间 xmlns:tx=“http://www.springframework.org/schema/tx”
<!-- 增加对事务的支持 (添加事务管理器
) -->
<tx
:annotation
-driven transaction
-manager
="txManager"/>
<!-- 配置事务管理器 txManager
-->
<bean id
="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name
="dataSource" ref
="dataSource"></property
>
</bean
>
<!-- 配置数据库相关 (数据源)
-->
<bean id
="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name
="driverClassName" value
="oracle.jdbc.OracleDriver"></property
>
<property name
="url" value
="127.0.0.1:1521:ORCL"></property
>
<property name
="username" value
="scott"></property
>
<property name
="password" value
="tiger"></property
>
<property name
="maxActive" value
="10"></property
><!-- 最大活动时间
-->
<property name
="maxIdle" value
="6"></property
><!-- 最大空闲时间
-->
</bean
>
使用
如果将注解添加在Bean类上,则表示事务的设置对整个 Bean类的所有方法都起作用;如果将注解添加在Bean类中的某 个方法上,则表示事务的设置只对该方法有效。
将需要成为事务的方法 前增加注解:
@
Transactional(readOnly
=false,propagation
=Propagation
.REQUIRED)