gpt4 book ai didi

java - userTransaction回滚方法在使用中?

转载 作者:行者123 更新时间:2023-11-30 03:36:22 25 4
gpt4 key购买 nike

我正在使用JBoss JTA 1.1

假设我有以下 DAO 方法:

public void addEmployee(final Employee e){
try {
userTransaction.begin();
} catch (Exception e1) { }
final String sql = "INSERT INTO users (name) VALUES(?)";
KeyHolder kh = new GeneratedKeyHolder();
JdbcTemplate = getJdbcTemplate(); //Inherited from JdbcDaoSupport

//Some data operations

try {
userTransaction.rollback(); //Why can use it?
} catch (Exception e1) { }
}

这个问题最初我不想回滚数据操作所做的更改。好吧,userTransaction.commit(); 确实很有用。但是rollback()...为什么我应该故意回滚我的更改?你就不能举个例子吗?

最佳答案

如果您需要执行多个插入/更新/删除操作并且希望它们全部成功或全部失败,则回滚非常有用。

例如,如果您正在插入新的用户信息,并且需要在不同的表中插入数据,您可能希望它们全部成功,而不仅仅是在某些表中插入数据。

已编辑

例如,您的数据库中有 3 个表:USER、ADDRESS 和 TELEPHONE。新用户在您的应用程序上注册,并且在您的代码中您有如下内容:

   try {
userTransaction.begin();

//operation to insert information in table USER

//operation to insert information in table ADDRESS

//operation to insert information in table TELEPHONE

userTransaction.commit();
} catch (Exception e) {
userTransaction.rollback();
}

现在假设在表 ADDRESS 的插入操作期间出现一些错误并且插入失败。您可能需要重做之前在表 USER 中的插入,因为要么成功插入用户的所有信息(包括地址和电话),要么最终会出现不完整的注册。

关于java - userTransaction回滚方法在使用中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27802088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com