Spring 开发第一步(四)Spring与JDBC事务
2014-11-03 15:47
288 查看
Spring使用各种不同的TransactionManager来管理各种不同数据源事务底层(比如jdbc数据源、hibernate数据源、JPA数据源等等)。在此基础上使用各种对应的Template来提供各种事务操作的方法。JDBC对应的是org.springframework.jdbc.datasource.DataSourceTransactionManager和org.springframework.transaction.support.TransactionTemplate.
在Spring容器中,datasource、manager、template的注入顺序应该是, datasource->manager->template->使用者(例如dao)
相关配置和代码举例(来自于《spring in action 3rd》)
以上配置与书上有些许不同,但道理是一样的,而且个人觉得上面的配置更能体现出注入顺序。
在Spring容器中,datasource、manager、template的注入顺序应该是, datasource->manager->template->使用者(例如dao)
相关配置和代码举例(来自于《spring in action 3rd》)
<jee:jndi-lookup id="dataSource" jndi-name="/jdbc/spitter" resource-ref="true" /> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate" p:transactionManager-ref="transactionManager"/> <bean id="jdbcTemplateDao" class="com.spitter.test.JdbcTemplateDao" p:dataSource-ref="dataSource" p:txTemplate-ref="transactionTemplate"/>
以上配置与书上有些许不同,但道理是一样的,而且个人觉得上面的配置更能体现出注入顺序。
private TransactionTemplate txTemplate; public void setTxTemplate(TransactionTemplate txTemplate){ this.txTemplate = txTemplate; } public void saveCity(String code , String name){ SimpleJdbcTemplate jdbc = getSimpleJdbcTemplate(); jdbc.update("insert into ta_ds_test(city_code, city_name) values(?,?)", code,name); } public void saveCityInTransaction(final String code , final String name){ txTemplate.execute(new TransactionCallback<Void>(){ @Override public Void doInTransaction(TransactionStatus arg0) { try{ saveCity(code,name); }catch(RuntimeException e){ arg0.setRollbackOnly(); throw e; } return null; } }); }
TransactionCallback是一个interface,上面的execute方法传入了一个TransactionCallback的具体实现的实例,有点绕。 实际上,这等同于:先定义一个类,该类实现了TransactionCallback接口,在其中override了doInTransaction()方法, 然后new 出来这个类的一个实例,再将这个实例传给exectue方法。
相关文章推荐
- 深入探索spring技术内幕(八): Spring +JDBC组合开发和事务控制
- 深入探索spring技术内幕(八): Spring +JDBC组合开发和事务控制
- Spring2.5教程:7、Spring+JDBC组合开发和事务
- Spring 开发第一步(三)Spring与JDBC
- Spring整合JDBC、Spring的AOP事务开发、Spring注解整理
- Spring整合JDBC、Spring的AOP事务开发、Spring注解整理
- Day49-Spring-03 - AOP开发(注解方式)-JDBC模板- 事务管理
- spring开发_JDBC操作MySQL数据库
- spring的jdbc事务管理和JTA有什么区别?
- spring 2.5整合jdbc进行数据库操作和注解事务控制
- Spring3开发实战 之 第五章:Spring中的事务
- Spring+JDBC组合开发 - 使用JdbcTemplate进行insert/update/delete/query操作
- 学习笔记---------------------spring2.5+jdbc(jdbctemplate)+事务管理
- 无需容器的对象关系映射 ------->用 Hibernate 和 Spring 开发事务持久层
- 框架学习之Spring 第四节 Spring集成JDBC组件开发
- 用 Hibernate 和 Spring 开发事务持久层
- 《Spring 2.0技术手册》 读书笔记七-Spring的DAO框架(3)-JDBC事务管理
- spring的事务管理,实际上是将jdbc操作的繁琐代码做成了切面
- 《Spring 2.0技术手册》 读书笔记七-Spring的DAO框架(3)-JDBC事务管理
- Spring 对 JDBC 的支持与Spring 中的事务管理