NoSQL DAO 实现

NoSQL DAO implementation

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

例如我有一个 Model 对象有:

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

不过我不太清楚如何为此创建 DAO 接口?我是否只是将我认为需要的所有方法都放在那里,因为我知道 DAOImpl class 将对 NoSQL 数据库进行实际查询。

这是它现在所在的位置:

public interface ModelDAO {

    List<Model> getAllModels();

    List<Model> getModelByName(String Name);

    void updateModel(Model model);

    void deleteModel(Model model);
}

但是,例如,如果我想更新模型的名称,或者 add/remove 组列表中的组,该怎么办?我会在这个 DAO class 中处理这些事情吗?或者我会在他们各自的 DAO classes 中解决那些问题。

抱歉,如果我的理解还不完全,我仍在努力学习这些东西。

您可以按照自己的意愿实施。重要的是要确保对象对您希望它们成为的样子负责。接口充当 DAO 和其他对象之间的连接器,因此您需要确保另一个对象需要做的任何事情都可以使用接口中的方法完成。但是,如果您将每个访问器和修改器都放在接口中,那么使用它就没有意义了,您可以将函数全部设置为 public (换句话说,如果您这样做,您就没有使用真正的完全没有 DAO。)一般来说,如果您有其他通过接口高度耦合的对象,则不应使用 DAO。如果您决定要坚持使用 DAO 结构,您应该有少量方法来执行您需要的任何更改。例如,如果您需要更改一个名为 'name' 的字段,您不会调用 'setName()',而是修改另一个对象中的名称字段,然后通过接口调用 'updateFields()'(或类似那个。)希望对您有所帮助,抱歉文字墙,这是一个复杂的问题。