如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
JdbcTemplate与事务管理JdbcTemplate操作采用的是JDBC默认的AutoCommit模式,也就是说我们还无法保证数据操作的原子性(要么全部生效,要么全部无效),如:JdbcTemplatejdbcTemplate=newJdbcTemplate(dataSource);jdbcTemplate.update("UPDATEuserSETage=10WHEREid='erica'");jdbcTemplate.update("UPDATEuserSETage=age+1WHEREid='erica'");由于采用了AutoCommit模式,第一个update操作完成之后被自动提交,数据库中”erica”对应的记录已经被更新,如果第二个操作失败,我们无法使得整个事务回滚到最初状态。对于这个例子也许无关紧要,但是对于一个金融帐务系统而言,这样的问题将导致致命错误。为了实现数据操作的原子性,我们需要在程序中引入事务逻辑,在JdbcTemplate中引入事务机制,在Spring中有两种方式:1.代码控制的事务管理2.参数化配置的事务管理下面就这两种方式进行介绍。代码控制的事务管理首先,进行以下配置,假设配置文件为(Application-Context.xml):<beans><beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><propertyname="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property><propertyname="url"><value>jdbc:jtds:sqlserver://127.0.0.1:1433/Sample</value></property><propertyname="username"><value>test</value></property><propertyname="password"><value>changeit</value></property></bean><beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><propertyname="dataSource"><reflocal="dataSource"/></property></bean><beanid="userDAO"class="net.xiaxin.dao.UserDAO"><propertyname="dataSource"><reflocal="dataSource"/></property><propertyname="transactionManager"><reflocal="transactionManager"/></property></bean></beans>配置中包含了三个节点:ØdataSource这里我们采用了apachedhcp组件提供的DataSource实现,并为其配置了JDBC驱动、数据库URL、用户名和密码等参数。ØtransactionManager针对JDBCDataSource类型的数据源,我们选用了DataSourceTransactionManager作为事务管理组件。如果需要使用基于容器的数据源(JNDI),我们可以采用如下配置:<beanid="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean"><propertyname="jndiName"><value>jdbc/sample</value></property></bean><beanid="transactionManager"class="org.springframework.transaction.jta.JtaTransactionManager"/>ØuserDAO申明了一个UserDAOBean,并为其指定了dataSource和transactionManger资源。UserDAO对应的代码如下:publicclassUserDAO{privateDataSourcedataSource;privatePlatformTransactionManagertran