NoSQL DAO implementation



我已经得出结论,使用DAO设计对于我想要实现的目标是最好的,但是我以前从未尝试过,所以我遇到了一点麻烦。我已经阅读了文档和示例,所以我知道目标是什么,但是我很难弄清楚我需要在DAO接口中包含什么。

例如,我有一个Model对象,它具有:

public String name;
public double baseline;
public List<Group> groups;
public List<Indicator> indicators;

我不知道我该如何为此创建DAO接口?我只是把每一个方法,我认为我需要在那里,因为我知道DAOImpl类将有实际查询NoSQL数据库。

这是它现在的位置:

public interface ModelDAO {
    List<Model> getAllModels();
    List<Model> getModelByName(String Name);
    void updateModel(Model model);
    void deleteModel(Model model);
}

但是,例如,如果我想更新模型的名称,或者从组列表中添加/删除组,该怎么办?这些是我要在这个DAO类中处理的吗?或者我将在它们各自的DAO类中解决这些问题。

对不起,如果我的理解还没有完全,我还在努力学习这些东西

您可以以任何您想要的方式实现它。重要的是要确保对象对你想要它们成为的东西负责。接口充当DAO和其他对象之间的连接器,因此您需要确保其他对象需要做的任何事情都可以使用接口中的方法完成。但是,如果您将每个访问器和变量都放在接口中,那么使用它就没有意义了,您可以将所有函数都设置为公共(换句话说,如果您这样做,您根本没有使用真正的DAO)。一般来说,如果您有其他将通过该接口高度耦合的对象,则不应该使用DAO。如果您决定坚持使用DAO结构,那么您应该有少量的方法来执行您需要的任何更改。例如,如果你需要更改一个名为'name'的字段,你不会调用'setName()',而是修改另一个对象中的名称字段,然后通过接口调用'updateFields()'(或类似的东西)。

希望能有所帮助,对不起,这是一个很复杂的问题。

最新更新