有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何定义一个好的存储库接口

我有以下情况:

我正在收集主机上的数据。 每个主机都有属性和状态的集合。 而且主人都是成群结队地聚集在一起的

每个组都有一个唯一的ID,每个主机都有一个唯一的ID

所有的组都集中在一个“存储库”中

我目前正在使用以下数据结构:

public class Host {
    private final Map<PropertyId, Property> properties;
    private final Map<StatusId, Status> statuses;
}

public class Group {
    private final Map<HostId, Host> hosts;
}

public class AllGroups {
    private final Map<GroupId, Group> groups;
}

目前,它是作为常规内存数据结构实现的 但我需要把这些都保存在数据库里。 我想定义一个好的抽象,它允许我:

  • 阅读每一项
  • 创建、更新和删除属性和状态的步骤
  • 添加和删除主机的步骤
  • 删除组

我读了一些关于存储库模式的文章,这似乎是合适的,但我不知道如何正确定义接口

我应该有1个存储库接口吗? 或者我应该为HostRepository、PropertyRepository和StatusRepository提供单独的接口吗


共 (1) 个答案

  1. # 1 楼答案

    您可以有单独的存储库接口,但这里有一种只使用一个接口的方法

    这些类可以很容易地映射到表(或NoSQL数据库中的文档)

    public class Property {
      private String name;
      private Object value;
    }
    
    public class Host {
      private long id;
      private List<Property> properties;
      private List<Property> statuses;
    }
    
    public class HostGroup {
      private long id;
      private List<Host> hosts;
    }
    
    public interface HostRepository {
    
      List<HostGroup> getAllGroups();
      HostGroup getGroupById(long id);
      HostGroup saveGroup(HostGroup HostGroup);
      boolean deleteGroup(HostGroup HostGroup);
    
      Host getHostById(long id);
      Host saveHost(Host host);
      boolean deleteHost(Host host);
    
      Property getProperty(long hostId, String propertyName);
      void saveProperty(long hostId, Property property);
      ...
    
    }