代码之家  ›  专栏  ›  技术社区  ›  Nipuna

DAO架构的必要性是什么

  •  3
  • Nipuna  · 技术社区  · 14 年前
    1. 在Java中编程时,是否总是需要根据DAO架构进行编码?如果是的话,使用它有什么好处?

    2. 我正在做一个有如下类图的项目。这有什么坏处?

    alt text

    实体类:

    private void fillSONumber() {
        try {
            ZnAlSalesOrder o = new ZnAlSalesOrder();
            ArrayList a = o.getPendingSalesOrderIDs();
            for (int i = 0; i < a.size(); i++) {
                cmbSoNo.addItem(a.get(i));
            }
            o.close();
        } catch (Terminated ex) {
    
        }
    }
    

    EntityTable类示例:

    public ResultSet select(String fields, String selection) {
        db = new Database();
        db.select("SELECT " + fields + " FROM " + name + " WHERE " + selection);
        return rs = db.rs;
    }
    

    4 回复  |  直到 14 年前
        1
  •  2
  •   Alan Geleynse buhbang    14 年前

    DAO模式的目的是将试图访问的数据与存储的数据分离开来。

    例如,您可以创建一个DAO,指定一些方法,然后针对MySQL实现这些方法。如果您决定需要迁移到MSSQL或Oracle,您只需要更改实现,而不需要更改可以在代码中的许多不同位置使用的接口。

    至于您的设计,基本的布局是好的,但我建议不要像您这样使用一般的select方法。基本上,您只是创建了另一个抽象层,在这个抽象层中,如果没有任何额外的好处,可能会出现问题。

    最好为需要访问的每种类型的数据编写SQL,并创建一个返回所需数据类型的方法。这减少了耦合,并允许您在需要时更改实现。

        2
  •  4
  •   Amir Raminfar Hadi Rasouli    14 年前

    当用Java编程时 建筑?如果是的话 使用它的好处?

    DAO是一种常见的最佳实践,它在过去是有效的,并且是干净的。优点是当一个新的开发人员开始这个项目时,他很可能已经熟悉了这个设计。使用任何模式最重要的是保持它 解耦的

    我在做一个有课的项目 如下图所示。什么是

    对我来说这是有道理的。我的问题是,你是唯一使用它的人吗。如果是,那么你需要所有这些接口吗?如果要将实现传递给其他人,接口很重要。就像一个API。以后可能会变成另一个子类。但如果你能完全控制你的设计,我认为你不应该白费力气创建臃肿的接口。

    最后,你的代码看起来不错,除了 o.close(); 为什么客户需要打电话给close?每个DAO函数都应该足够聪明,能够打开和关闭连接。数据库对bean应该是透明的。在我看来,不需要做一个了结。

        3
  •  1
  •   orangepips 111111    14 年前

    DAOs提供了一种方便的方法来抽象保存数据,因此不需要区分插入和更新。

    网关允许您构建专用查询。例如,假设有一个搜索结果,需要对数据进行分页。除了任何条件外,网关方法还可以将起始行和结束行作为参数,并返回仅包含该窗口的记录集。

        4
  •  1
  •   Anjna Sharma    13 年前

    所以在哪里做什么工作是可以预见的,所以任何一个新加入这个项目的人都可以很容易地理解项目的流程。