繁体   English   中英

是否可以使Java方法具有事务性?

[英]Is it possible to make a Java method transactional?

对于一个项目,我正在构建一个独立的Java应用程序。 我现在想将数据插入几个数据库表中。 这些插入语句都是从一种方法调用的,并且都具有自己的Java类,该类包含执行这些语句的代码。 像这样:

DataService1 ds1 = new DataService1();
DataService2 ds2 = new DataService2();

updateDatabase() {
  ds1.insertData1(data);
  ds2.insertData2(data2);
}

DataService1DataService2类是连接到数据库并执行insert语句的类。

是否可以使此方法( updateDatabase() )具有事务性? 如果插入表之一失败,该方法将回滚所有其他sql语句? 我知道您可以使sql语句具有事务性,但是insert语句都在不同的类中。 还是我的方法首先是错误的?

谢谢!

您可以做的是使用try-catch。 使ds1和ds2尝试插入它,如果失败,则使用throw new MyInsertFailedException() (您必须创建一个,它只是扩展Exception的类。)在catch (MyInsertFailedException e){}您可以应用使每个DataService尝试回滚的代码。

当然有可能。 您只需要确保在方法开始时打开一个事务,将该事务用于statemets,并且如果其中一条语句失败,则会回滚该事务。

诸如Hibernate之类的ORM系统可以自动为您处理此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM