了解DataSource概念

时间:2015-07-27 09:34:48

标签: java datasource

我正在设计一个界面,用于表示某些实体的标识符集合。通过两个类似的接口,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概念是否正确,如果是这样,我应该如何重新设计它(如果需要)。

1 个答案:

答案 0 :(得分:1)

根据您提供的信息,我认为您尝试设计的内容更类似于DAO(数据访问对象,请参阅this wikipedia page)或JPA的{{ 1}}而不是EntityManager。主要区别在于DataSource完全从它提供的数据类型中提取(它可以很好地提供许多不同类型的数据,如数据库连接可以做到的),而其他的则没有(或更好,较小的程度,尤其是DataSource)。如果您需要抽象对某个实体的标识符列表的访问,您不希望(至少我认为如此)从实体本身进行抽象,因此EntityManager不是您可以应用的最佳概念你的设计。