Java事务:回滚后如何停止程序?

Java Transaction: how to stop program after rollback?

我有以下代码在 transaction 中执行数据库操作:

  try {
                //start transaction
                repository.startTransaction();

               //carry out deletion logic
                repository.deletedata()

                //commit all 3 transactions
                 repository.commitTransaction();

      }catch (Exception e) {    
                 repository.rollback();
            }

目前如果 运行 时有 error,应用程序仍 继续 运行。但是,我希望程序的执行在数据回滚后停止

我怎样才能最好地做到这一点?

首先,要终止执行,您应该使用自己的业务级异常。

其次,语句repository.rollback();也可能失败。只是一个想法。

我的方法是:

class MyApp {
    public static final main(){
        new MyApp().run();
    }

    private void run(){
        MyRepositoryProcessor proc = new MyRepositoryProcessor();

        try {
            // Some loop here maybe...
            proc.deleteFromRepo();
        } catch (MyDatabaseCommunicationException ex) {
            System.exit(-1);
        }
    }
}

class MyRepositoryProcessor {
    public void deleteFromRepo() throws MyDatabaseCommunicationException {
        try {
            //start transaction
            repository.startTransaction();

            //carry out deletion logic
            repository.deletedata()

            //commit all 3 operations
            repository.commitTransaction();

        }catch (Exception e) {
            try {
                repository.rollback();
            } catch (Exception ex){
                // Database connection failed completely, could not even do a rollback.
            }
            throw new MyDatabaseCommunicationException("Deletion failed");
        }
    }
}

System.exit(0) ?

您可以在此处找到一些文档 http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html