Java 正在使用userTransaction回滚方法?

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

我正在使用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()在防御上很有用。但是
回滚()
。。。为什么我要故意回滚我的更改?您不能举出一个例子吗?

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

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

已编辑

例如,假设数据库中有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();
   }

现在想象一下,在表地址的插入操作期间,出现了一些错误,并且插入失败。您可能希望在用户表中重新执行以前的插入操作,因为用户的所有信息(包括地址和电话)都已成功插入,或者最终注册不完整。

您可以给出一个代码示例吗?我现在还不太清楚,我在回复中添加了更多细节,希望能有所帮助。:)