理解数据源概念
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
是一个实体)可能至少有两个不同的实现SqlFilterDataSource
和WebApplicationGlobalCacheFilterDataSource
(它们将被创建在 IoC
容器内)。
我的问题是关于界面的。在这种情况下使用 DataSource
概念是否正确?如果是这样,我应该如何重新设计它(如果需要)。
根据您提供的信息,我认为您尝试设计的更类似于 DAO
(数据访问对象,请参阅 this wikipedia page)或 JPA EntityManager
比一个 DataSource
。 afaict 的主要区别是 DataSource
完全从它提供的数据类型中抽象出来(它可以很好地提供许多不同类型的数据,就像数据库连接那样),而其他的则不(或者更好的是,程度较小,尤其是 EntityManager
)。如果您需要抽象对某个实体的标识符列表的访问,您不想(至少我是这样认为)从实体本身抽象,因此 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
是一个实体)可能至少有两个不同的实现SqlFilterDataSource
和WebApplicationGlobalCacheFilterDataSource
(它们将被创建在 IoC
容器内)。
我的问题是关于界面的。在这种情况下使用 DataSource
概念是否正确?如果是这样,我应该如何重新设计它(如果需要)。
根据您提供的信息,我认为您尝试设计的更类似于 DAO
(数据访问对象,请参阅 this wikipedia page)或 JPA EntityManager
比一个 DataSource
。 afaict 的主要区别是 DataSource
完全从它提供的数据类型中抽象出来(它可以很好地提供许多不同类型的数据,就像数据库连接那样),而其他的则不(或者更好的是,程度较小,尤其是 EntityManager
)。如果您需要抽象对某个实体的标识符列表的访问,您不想(至少我是这样认为)从实体本身抽象,因此 DataSource
不是您可以应用的最佳概念适合您的设计。