spring学习笔记之二:Spring对事务的支持
?? 1spring对事务的管理提供了一致的编程模板,在高层次的建立了统一的事务抽象,也就是说,不管选择Spring Jdbc,Hibernate,Jpa还是ibatis? ,
都可以用统一的编程模型进行事务管理。这让用户可以抛开事务处理来编写程序。
2下面是spring对事务管理器的实现类。
????????? A org.springframework.orm.jpa.JpaTransactionManager -----使用JPA时
Borg.springframework.orm.hibernate3.HibernateTransactionManager------使用Hibernate3.0时
Corg.springframework.orm.jdbc.datasource.DataSourceTransactionManager--JDBC或者ibatis等基于datasource数据源持久化技术时。
这些事务管理器都是对特定事务实现的框架的代理,我门可以通过Spring提供的抽象对不同类型的事务采用相同的处理,而不必关系实现的细节。
?????? 3? 常见的事务管理器。
?? 在使用 jdbc,ibatis时: 写道
p:password="${jdbc.password}"><property name="initialPoolSize"
value="5" />
<property name="maxPoolSize" value="10" />
</bean>
<!-- Transaction manager for a single JDBC DataSource (alternative to JTA) -->
<bean id="transactionManager"
/>
<tx:annotation-driven transaction-manager="transactionManager"/>
?
在幕后,DataSourceTransactionManager使用DataSource的Connection的Commit(),Rollback()等方法的管理事务。
? 4采用注解的方式配置申明式事务(@Transactional),用户可以直接在需要事务增强的业务类或业务方法中使用◎Transaction进行定义(注解不能被继承),代替XML的配置方式,
◎Transaction 写道@Service
@Transactional
public class UserDaoManagerImpl extends IbatisDaoSupport implements UserDaoManager {
@Override
public List getUserLists() {
return null;
}
@Override
public void showMessage() {
List list=this.getSqlMapClientTemplate().queryForList("getSeq");
}
}
?
?