Java JDBC模板中的rollback()是如何工作的?
我正在学习JDBS模板,想知道是否有一种方法可以回滚操作 使用JDBC很容易做到这一点,只要Java JDBC模板中的rollback()是如何工作的?,java,spring,Java,Spring,我正在学习JDBS模板,想知道是否有一种方法可以回滚操作 使用JDBC很容易做到这一点,只要 conn.setAutoCommit(false); // DoinП stuff con.rollback(); 但是,有没有一种方法可以使用JDBS模板执行相同的操作呢?如果您想执行多条语句,并且希望确保执行全部或全部不执行,那么可以使用事务 首先,您必须创建一个会话并开始事务 之后,您可以执行语句并提交事务 但是,如果出现问题,可以回滚(撤消以前的语句) 使用spring,您可以使用@Tra
conn.setAutoCommit(false);
// DoinП stuff
con.rollback();
但是,有没有一种方法可以使用JDBS模板执行相同的操作呢?如果您想执行多条语句,并且希望确保执行全部或全部不执行,那么可以使用事务
- 首先,您必须创建一个会话并开始事务
- 之后,您可以执行语句并提交事务
- 但是,如果出现问题,可以回滚(撤消以前的语句)
@Transactional
public void transaction() { // Spring will begin transaction
doTransactionalStatements(); // Spring will rollback in case of RuntimeException
} // Spring will commit transaction
如果要执行多条语句,并确保执行全部或全部不执行,则可以使用事务
- 首先,您必须创建一个会话并开始事务
- 之后,您可以执行语句并提交事务
- 但是,如果出现问题,可以回滚(撤消以前的语句)
@Transactional
public void transaction() { // Spring will begin transaction
doTransactionalStatements(); // Spring will rollback in case of RuntimeException
} // Spring will commit transaction
你应该在这里用类似的
由于这个springbootstarter数据jdbc
和springboot自动配置机制,将为您创建一个bean和一个bean
然后,您可以使用非私有方法上的@Transactional
注释将代码包装到事务中:
@Transactional
public void methodA() {
jdbcTemplate.update(...);
jdbcTemplate.update(...);
}
或者,您可以使用以编程方式处理事务
@Service
public class ServiceA {
private final TransactionTemplate transactionTemplate;
public SimpleService(PlatformTransactionManager transactionManager) {
this.transactionTemplate = new TransactionTemplate(transactionManager);
}
public void methodA() {
transactionTemplate.execute(new TransactionCallback<>() {
public Object doInTransaction(TransactionStatus status) {
jdbcTemplate.update(...);
jdbcTemplate.update(...);
return jdbcTemplate.query(...);
}
});
}
}
@服务
公共类服务{
私有最终交易模板TransactionTemplate;
公共SimpleService(平台事务管理器事务管理器){
this.transactionTemplate=新transactionTemplate(transactionManager);
}
公开无效方法a(){
execute(新建TransactionCallback(){
公共对象doInTransaction(TransactionStatus状态){
jdbcTemplate.update(…);
jdbcTemplate.update(…);
返回jdbcTemplate.query(…);
}
});
}
}
您应该使用类似的
由于这个springbootstarter数据jdbc
和springboot自动配置机制,将为您创建一个bean和一个bean
然后,您可以使用非私有方法上的@Transactional
注释将代码包装到事务中:
@Transactional
public void methodA() {
jdbcTemplate.update(...);
jdbcTemplate.update(...);
}
或者,您可以使用以编程方式处理事务
@Service
public class ServiceA {
private final TransactionTemplate transactionTemplate;
public SimpleService(PlatformTransactionManager transactionManager) {
this.transactionTemplate = new TransactionTemplate(transactionManager);
}
public void methodA() {
transactionTemplate.execute(new TransactionCallback<>() {
public Object doInTransaction(TransactionStatus status) {
jdbcTemplate.update(...);
jdbcTemplate.update(...);
return jdbcTemplate.query(...);
}
});
}
}
@服务
公共类服务{
私有最终交易模板TransactionTemplate;
公共SimpleService(平台事务管理器事务管理器){
this.transactionTemplate=新transactionTemplate(transactionManager);
}
公开无效方法a(){
execute(新建TransactionCallback(){
公共对象doInTransaction(TransactionStatus状态){
jdbcTemplate.update(…);
jdbcTemplate.update(…);
返回jdbcTemplate.query(…);
}
});
}
}
您如何进行交易管理?您如何进行交易管理?