HTTP和数据库的DAO模式

时间:2017-10-24 06:13:55

标签: java design-patterns interface

我即将在我的项目中实现DAO设计模式,我知道这最常用于与数据库通信。

但是由于通常有一个接口和一个实现,我不禁认为这也可以用于HTTP。即你有针对数据库的CRUD的DAO实现和用于访问CRUD API的另一个DAO实现。但如果它也像这样使用,那么解决问题的常用方法是什么,你可能没有删除API的权限?

这是正确的还是为什么我需要一个接口呢?或者只是允许我轻松更改数据库实现?

1 个答案:

答案 0 :(得分:1)

DAO模式通常用于解耦不同形式的数据表示;例如,将数据库模式与Java应用程序逻辑分开。接口(在某种意义上,我认为您正在讨论)通常用于将Java逻辑的实现与其实现分离。这两种形式的解耦是完全不同的,没有理由不将两者结合使用,如果这样可以使设计更易于维护或表达。即使Java代码是通用的(例如,在某些可重用的库中),我也不认为通过接口指定其行为是必须的,尽管在这一点上有不同的观点。

至于你的具体问题:如果你有对数据进行操作的Java方法,并且那些操作可能会失败,那么通常会抛出异常。如果您正在使用DAO,并且您的部分Java逻辑与数据存储实现高度分离,那么该逻辑甚至可能无法将“拒绝访问”视为有意义的概念。在这种情况下,您还必须解除异常,并让您的DAO逻辑抛出一般的“更新失败”异常。该异常可以携带从特定存储实现到其调用者的原始异常(“访问被拒绝”),其可能或可能不能理解它。广泛解耦的一个危险是错误处理变得越来越不具体,因为您从错误源获得的内容越多。