Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HTTP和数据库的DAO模式_Java_Design Patterns_Interface - Fatal编程技术网

Java HTTP和数据库的DAO模式

Java HTTP和数据库的DAO模式,java,design-patterns,interface,Java,Design Patterns,Interface,我将在我的项目中实现DAO设计模式,我知道这是最常用于与数据库通信的模式 但由于通常有一个接口和一个实现,我不禁认为这也可以用于HTTP。i、 e.您有一个针对数据库的CRUD的DAO实现和另一个访问CRUDAPI的DAO实现。但是,如果它也是这样使用的,那么解决API上可能没有删除权限的问题的常见方法是什么 这是否正确,或者为什么我需要一个接口?还是仅仅为了让我能够轻松地更改数据库实现?DAO模式通常用于解耦不同形式的数据表示;例如,将数据库模式与Java应用程序逻辑分离。我认为您正在讨论的接

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

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


这是否正确,或者为什么我需要一个接口?还是仅仅为了让我能够轻松地更改数据库实现?

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

至于您的具体问题:如果您有对数据进行操作的Java方法,并且这些操作可能会失败,那么按照惯例,您会抛出一个异常。如果您使用的是DAO,并且部分java逻辑与数据存储实现高度解耦,那么该逻辑甚至可能不会将拒绝访问视为一个有意义的概念。在这种情况下,您还必须解耦异常,并让DAO逻辑抛出一个常规的更新失败异常。该异常可以将来自特定存储实现的被拒绝的原始异常访问传递给调用方,调用方可能无法理解该异常。广泛解耦的一个危害是,从错误源获得的信息越远,错误处理就变得越来越不具体