Java 正在使用userTransaction回滚方法?
我正在使用JBoss JTA 1.1 假设我有以下DAO方法:Java 正在使用userTransaction回滚方法?,java,spring,jta,Java,Spring,Jta,我正在使用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 GeneratedKeyHolde
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()代码>在防御上很有用。但是回滚()
。。。为什么我要故意回滚我的更改?您不能举出一个例子吗?如果您需要执行多个插入/更新/删除操作,并且希望它们全部或全部成功,则回滚非常有用
例如,如果要插入新的用户信息,并且需要在不同的表中插入数据,则可能希望它们全部成功,而不仅仅是在某些表中插入数据
已编辑
例如,假设数据库中有3个表:用户、地址和电话。新用户在您的应用程序上注册,在您的代码中有如下内容:
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();
}
现在想象一下,在表地址的插入操作期间,出现了一些错误,并且插入失败。您可能希望在用户表中重新执行以前的插入操作,因为用户的所有信息(包括地址和电话)都已成功插入,或者最终注册不完整。您可以给出一个代码示例吗?我现在还不太清楚,我在回复中添加了更多细节,希望能有所帮助。:)