RowSet,CachedRowSet等的实现

Ben*_*nyz 15 java jdbc resultset rowset cachedrowset

直到今天,我还在ResultSet处理查询结果时.但今天我读了一些关于RowSet并且CachedRowset我意识到他们可以更好地服务于我的目的.而在所有的例子我读到这里RowSetCachedRowSet被简称为对象,当我尝试过自己在我的代码,我意识到那些接口,并在他们的例子使用这些接口的一些实现.

现在我的问题是我在哪里找到这些实现,是否有官方的东西?

我需要下载它们还是它们带有JDK?

Bal*_*usC 20

这些实现是特定于JRE的.Oracle(Sun)JRE附带了许多实现:

  • com.sun.rowset.JdbcRowSetImpl
  • com.sun.rowset.CachedRowSetImpl
  • com.sun.rowset.WebRowSetImpl
  • com.sun.rowset.FilteredRowSetImpl
  • com.sun.rowset.JoinRowSetImpl

在Java 1.6及之前,您需要自己构建它们:

JdbcRowSet rowSet = new JdbcRowSetImpl();
rowSet.setDataSourceName("jdbc/dbname");
// Or
rowSet.setUrl("jdbc:vendor://host:port/dbname");
rowSet.setUsername("username");
rowSet.setPassword("password");

rowSet.setCommand("SELECT id, name, value FROM tbl");
rowSet.execute();

while (rowSet.next()) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

在Java 1.7中,您可以通过javax.sql.rowset工厂获取它们,这样您就不依赖于底层JRE实现,并且您可以在必要时微调选择的实现:

RowSetFactory rowSetFactory = RowSetProvider.newFactory();
JdbcRowSet rowSet = rowSetFactory.createJdbcRowSet();
// ...
Run Code Online (Sandbox Code Playgroud)

它只提供通过ResultSet建设的可能性.这些实现不附带普通的JDBC驱动程序(至少MySQL和PostgreSQL没有).它基本上是JDBC API上的一个额外(可选)层,因为包名称前缀javax提示.

请注意,如果通过查看行集来实现这一目标,那么您可能需要考虑查看ORM,例如Hibernate或JPA.它们提供第一级/第二级缓存可能性.

也可以看看: