gpt4 book ai didi

java - 适用于 HTTP 和数据库的 DAO 模式

转载 作者:行者123 更新时间:2023-12-02 12:06:04 24 4
gpt4 key购买 nike

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

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

这是正确的还是为什么我需要一个接口(interface)?或者只是为了让我轻松更改数据库实现?

最佳答案

DAO模式一般用于解耦不同形式的数据表示;例如,将数据库模式与 Java 应用程序逻辑分开。接口(interface)(我认为您正在讨论的意义上)通常用于将 Java 逻辑的实现与其实现分离。这两种形式的解耦是完全不同的,如果这使设计更易于维护或更具表现力,那么没有理由不一起使用两者。即使 Java 代码旨在通用(例如,在某些可重用库中),那么我认为没有必要通过接口(interface)指定其行为,尽管对此存在不同的看法。

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

关于java - 适用于 HTTP 和数据库的 DAO 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46903370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com