我正在尝试找到一种解决方案来为我们的 web 应用程序建立可靠性。如果网络连接/数据库连接丢失,计划是转储 sql 和数据。在当前的实现中,我们有 Rest 控制器、Service、DAO。DAO 抛出PersistenceExcetpion
,并传播到控制器层。
示例代码:
public MyDAOClass {
public void save(Object object) {
try {
entityManager.persist(object);
} catch (PersistenceException e) {
throw new DBException("Error occurred in save", e);
}
}
}
这DBException
是一个运行时异常。
现在是真正的问题。其中一位队友建议有自定义例外,例如。InsertException, UpdateException
等等,如果我们遇到这些异常中的任何一个,我们就会知道对该实体执行了哪些操作,以便可以将其作为适当的 sql.xml 保存到文件中。
例如。假设代码无法保存Employee
实体。这将抛出InsertException
,并将在文件中创建一个条目作为该实体的插入 sql 语句。insert into employeee values ('firstname','lastname');
对我来说,在连接丢失时实现创建 sql 文件的想法似乎并不像实现上述那样简单。
我提出的问题是 1) 在服务方法中执行多个操作(如插入、更新、删除的任意组合)时,您如何处理?2)不同的例外呢?我的意思是,原因PerisistenceException
可能是约束失败、找不到实体等,而不仅仅是连接问题。
有没有办法实现上述场景,它也考虑了所有不同的条件。
谢谢。
更新: 基于 chrylis 的评论。我应该已经将此添加到问题中。这是一个在不同零售店本地运行的网络应用程序。并且应用程序不能停机,所以如果有任何连接问题,应用程序应该继续工作。该文件稍后将与中央数据库服务器同步。