【发布时间】:2015-05-13 13:11:47
【问题描述】:
我需要在 jdbc 中执行一系列的选择、更新、插入查询。
这是我的代码:
public String editRequest(){
connection = DatabaseUtil.getServiceConnection();
try {
connection.setAutoCommit(false);
executeUpdateCategory(category, ticketid);
executeUpdateSubCategory(subcategory,
ticketid);
executeUpdateItem(item, ticketid));
executeUpdateImpact(impact),ticketid));
connection.commit();
response = "Success";
} catch (SQLException e) {
rollback();
}
return response;
}
方法定义:
public void executeCategory(category,ticketid){
try{
//select query using connection and prepared statement
}
catch(SQLException e){
e.printstacktrace();
}
etc... methods
注意:由于它是单个事务。因此,如果我们在方法中遇到任何异常,它正在执行一些语句。它正在调用commit() 方法。
但是这些方法是可重用的。谁能在editRequest方法catch块中捕获异常,以便在出现错误时回滚事务?
【问题讨论】:
-
如果您希望使用连接管理事务,则必须使用相同的连接对象,这反过来意味着您必须将连接对象传递给事务中的每个方法。跨度>
-
不要在executeCategory()中捕获异常,只声明抛出SQLException
-
@ramp 看起来
connection是会员,然后就可以了…… -
@Uwe,你是对的。我没有注意到它是一个实例变量。
-
你用 [spring] 标记了这个方法,那么你为什么不使用它呢?使用
JdbcTemplate和正确配置的DatasourceTransactionManager并创建您的方法@Transactional。这简化了您的代码、获取日志记录和自动事务行为...
标签: java spring jakarta-ee jdbc