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
我有以下代码在 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