资源描述:
《12_编程式事务和事务模板》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编程式事务和事务模板回顾Spring之JdbcTemplate操作JdbcTemplate简介update(Stringsql,Object[]obj);query(Stringsql,Object[]obj,RowMapperrowMapper)queryForObject(Stringsql,Object[]obj,RowMapperrowMapper)queryForInt(Stringsql,Object[]obj)queryForMap(Stringsql,Object[]obj)Spring之NamedParameterJdbcTemplate操作NamedParameter
2、JdbcTemplate简介Update(Stringsql,SqlParameterSourceps)Update(Stringsql,MapparamMap)getJdbcOperations().query(Stringsql,RowMapperrowMapper)query(Stringsql,SqlParameterSourceps,RowMapperrowMapper);queryForObject(Stringsql,SqlParameterSourceps,RowMapperrowMapper)queryForObject(Stringsql,SqlParameterSo
3、urceps,ClassRequiredType)目标事务管理JDBC事务处理spring事务处理编程式事务声明式事务编程式事务实现方式编程式事务核心接口PlatformTransactionManager实现TransactionTemplate实现JDBC中事务处理以往使用JDBC进行数据操作,使用DataSource,从数据源中得到Connection,我们知道数据源是线程安全的,而连接不是线程安全的,所以对每个请求都是从数据源中重新取出一个连接。一般的数据源由容器进行管理,包括连接池。例如TOMCAT,WEBSPHERE,WEBLOGIC等这些J2EE商业容器都提供了这个功能。以
4、往的我们使用JDBC在写代码时,事务管理可能会是这样:Connectionconn= null;try{conn=DBConnectionFactory.getConnection;conn.setAutoCommit(false); //do somethingconn.commit(); //committranscation}catch(Exceptione){conn.rollback(); //dosth}finally{ try{conn.close(); }catch(SQLExceptionse){ //dosth.} /
5、/closeResultSet,PreparedStatement,Connection//notice:MaybeocurrException when u closers,pstmt,conn}按照以往的思路来写代码,代码量比较长,而且容易疏忽,忘掉一些try/catch,引发一些异常无法catch,虽然有时候我们会写DBTool类,来关闭这些资源,并且保证在关闭这些资源时,不向外抛异常。Spring中事务处理spring提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活。事务核心接口Spring提供了几个
6、关于事务处理的接口类:TransactionDefinition:事务属性定义,描述了事务的隔离级别,超时时间,事务是否只读,传播规则等等;TranscationStatus:描述事务的状态,代表了当前的事务,可以提交,回滚PlatformTransactionManager:事务管理器接口,只定义了3个方法:getTransaction()获取事务的状态;commit();rollback();事务管理器的实现类有多种,根据具体的持久层框架的不同而不同;实现类:DataSourceTransactionManager、HiberNateTransactionManager、JdoTra
7、nsactionManager等事务属性定义也叫事务传播行为的种类:PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。PROPAGATION_REQUIRES_NEW--新建事务,如果当前存