Spring框架提供了两种编程事务管理方法:
使用TransactionTemplate.的
PlatformTransactionManager实现.这里描述了上面的内容:http://static.springsource.org/spring/docs/2.0.8/reference/transaction.html
Spring站点在这里没有提到JdbcTemplate。根据我的理解,JdbcTemplate还在内部管理事务,这也是在程序中完成的。
那么,TransactionTemplate和JdbcTemplate的基本区别是什么?
发布于 2011-07-02 19:35:33
JdbcTemplate不是事务管理器。它只是本地JDBC操作的助手类:
--这是JDBC包中的中心类。它简化了JDBC的使用,有助于避免常见的错误。它执行核心JDBC工作流,留下应用程序代码来提供SQL和提取结果。这个类执行SQL查询或更新,在ResultSets上启动迭代并捕获JDBC,并将它们转换为org.springframework.dao包中定义的通用、信息更丰富的异常层次结构。
顺便说一下,TransactionTemplate也不是事务管理器,它是一个
模板类,它简化了编程事务划分和事务异常处理。
PlatformTransactionManager (和AbstractPlatformTransactionManager的其他子类)是一个事务管理器,与它一样
如果存在一个现有的transaction;
因此,这个类负责实际的事务处理,而不是TransactionTemplate,如果您想要以编程方式实现它,而不是声明性事务处理,则需要使用该类。(请参阅this博客,尽管非常过时,但您将看到声明性和手动性之间的区别)
来自Spring 3 Reference的引号。
注意:在整个Spring中,您还可以找到其他*模板类: HibernateTemplate、JmsTemplate等。它们都遵循相同的模式:模板类,它从根本上减少了您需要编写的代码数量,因为所有所谓的样板代码都将由它们处理。示例(来自here):
无JdbcTemplate
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void insert(Customer customer){
String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
Connection conn = null;
try {
conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, customer.getCustId());
ps.setString(2, customer.getName());
ps.setInt(3, customer.getAge());
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {}
}
}
}以及使用JdbcTemplate
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void insert(Customer customer){
String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(sql, new Object[] { customer.getCustId(),
customer.getName(),customer.getAge()
});
}https://stackoverflow.com/questions/6558871
复制相似问题