理解数据源概念

Understanding DataSource concept

我正在设计一个界面,它将代表一些实体的标识符集合。通过两个类似的接口 jdk 为我们提供了(javadoc ommited):

javax.sql.DataSource:

public interface DataSource  extends CommonDataSource,Wrapper {

  Connection getConnection() throws SQLException;


  Connection getConnection(String username, String password)
    throws SQLException;

}

javax.activation.DataSource:

public interface DataSource {

    public InputStream getInputStream() throws IOException;

    public OutputStream getOutputStream() throws IOException;

    public String getContentType();

    public String getName();
}

我决定写这样的东西:

public interface FilterDataSource{

    public List<Integer> getIdentifiers();

}

接口(我叫它FilterDataSource,其中Filter是一个实体)可能至少有两个不同的实现SqlFilterDataSourceWebApplicationGlobalCacheFilterDataSource(它们将被创建在 IoC 容器内)。

我的问题是关于界面的。在这种情况下使用 DataSource 概念是否正确?如果是这样,我应该如何重新设计它(如果需要)。

根据您提供的信息,我认为您尝试设计的更类似于 DAO(数据访问对象,请参阅 this wikipedia page)或 JPA EntityManager 比一个 DataSource。 afaict 的主要区别是 DataSource 完全从它提供的数据类型中抽象出来(它可以很好地提供许多不同类型的数据,就像数据库连接那样),而其他的则不(或者更好的是,程度较小,尤其是 EntityManager)。如果您需要抽象对某个实体的标识符列表的访问,您不想(至少我是这样认为)从实体本身抽象,因此 DataSource 不是您可以应用的最佳概念适合您的设计。