Spring Framework提供了两种程序化事务管理方法:
1)使用TransactionTemplate .
2)直接使用PlatformTransactionManager实现 .
上面提到的是http://static.springsource.org/spring/docs/2.0.8/reference/transaction.html
Spring网站在这里没有提到JDBC模板 . 根据我的理解,jdbc模板也在内部管理事务,这也是在程序中完成的 . 那么TransactionTemplate和jdbc tempalte之间的基本差异是什么呢?
1 回答
JdbcTemplate
不是交易管理员 . 它只是本机JDBC操作的辅助类:顺便说一句
TransactionTemplate
也不是交易经理,它是一个PlatformTransactionManager
(以及AbstractPlatformTransactionManager
的其他子类) is a transaction manager ,如同在其中确定是否存在现有交易;
应用适当的传播行为;
如有必要,
暂停和恢复交易;
检查commit上的rollback-only标志;
在回滚时应用适当的修改(实际回滚或仅设置回滚);
触发已注册的同步回调(如果事务同步处于活动状态) .
所以这个类负责实际的事务处理,而不是
TransactionTemplate
,如果你想要在程序上实现它而不是声明式事务处理,那么将使用它 . (见this博客,虽然已经过时了,你会看到声明和手册之间的区别)来自Spring 3 Reference的报价 .
注意:在整个Spring框架中,您还可以找到其他* Template类:HibernateTemplate,JmsTemplate等 . 它们都遵循相同的模式:模板类从根本上减少了您需要编写的代码量,因为所有所谓的样板代码将由他们处理 . 示例(来自here):
没有
JdbcTemplate
:和
JdbcTemplate
: