当前位置: 首页 > 面试题库 >

在服务层中处理Dao异常

公良琛
2023-03-14
问题内容

如果我的Dao层抛出了Dao特定的异常,那么在我的服务层中对它们的处理是否会引起关注的泄漏?如果是,那么我应该使异常通用且独立于任何层来解决它,还是有其他方法吗?

相同的问题适用于服务层引发的UI层处理异常。


问题答案:

当我们创建一个分层的应用程序时,总是有一个用户层和另一个使用过的层。对于这种情况,UI层->使用服务层->使用DAO层。

现在,它非常主观并且易于解释。但目标应该是 良好的去耦程度 。为此,一种解决方法是定义通用 层特定的异常,
例如PersistentExceptionServiceException等等。这些异常将包装实际的层特定的异常。

例如
说,如果在数据库方面有错误(违反约束等),则将其包装在PersistentException中,然后让服务层处理(关于如何以通用方式将其传达给UI层)

现在,由于服务层和DAO层之间的 集成契约式的 (基于接口的),因此DAO层只要遵守 接口契约
,就可以自由地将实现更改为任何内容。因此,如果您更改了引发一些新异常的实现,则可以包装这些新异常,PersistentException并且
Service层不会受到影响



 类似资料:
  • 假设我有类和。 班级帐户 班级付款 DAO层有实现CRUD方法的和类。下一个是服务层,它有和类,它们在DAO类之上执行其他操作。 因为我使用的是货币/货币,所以我使用的是交易。我在我的DAO课程中使用它们。 我的类有一个方法,该方法为每个特定的DaoFactory(例如)返回一个连接对象,该对象使用 中实现这个场景时,它是实现事务的正确方式吗?

  • 在我的示例中,我有一个Hibernate实体和一个DAO。 当我以这种方式使用DAO时 数据库中只保存了一行(Action2)。当我删除注释时,两行(Action1和Action2)都被保存(这是我需要的行为)。我的问题是服务层上的事务注释如何影响事务(方法executeTransaction())的执行。为什么没有服务层上的事务性注释,这两行都保存在数据库中,而只有最后一行与此注释一起保存?

  • 我正在处理一个Spring启动应用程序。我尝试处理异常。但我想我这样做的方式有问题,因为它总是抛出内部服务器错误500。 我尝试设置自定义异常类,并且还使用带有@响应状态的响应状态代码。但是不管异常是什么,它只会抛出内部服务器错误。我使用的是intellij,我在异常中给出的消息打印在那里,但响应正文empty.This我想一定是因为它抛出了内部服务器错误。 控制器类 intellij 中的终端打

  • 我正在尝试使用Spring MVC处理自定义异常处理。服务层DAO层异常处理程序和服务层对异常进行包装,并由Spring MVC的控制器异常处理程序对异常进行处理。以下是我的代码: 在上面的代码中,DAO层的异常处理在服务层,并将该异常包装在自定义异常中,然后抛出该异常。

  • 问题内容: 首先,可能是我要问一些以前已经问过并回答过的问题,但我却无法找回搜索结果。一般而言(或到目前为止):)我们在服务层上定义事务注释,通常是Spring Hibernate Crud。 现在,我需要根据客户站点在域模型之间进行选择。假设客户端A使用我的域模型都很好,但是另一个客户端网站会给我一个Web服务而不是使用我们的域模型。 我应该替换哪一层。我认为必须是DAO,它将从Web服务获取我

  • 我正在使用quarkus版本,需要知道如何处理未知endpoint。当我试图命中尚未实现的endpoint时,它只会发送,而不是我希望实现的异常。我无法找到相同的实现。有人能帮我做这个吗?