Ответ 1
Реализации специфичны для 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()) {
// ...
}
В Java 1.7 вы можете получить их с помощью javax.sql.rowset
factory, чтобы вы не зависели от основной реализации JRE и чтобы при необходимости вы могли оптимизировать реализацию выбора:
RowSetFactory rowSetFactory = RowSetProvider.newFactory();
JdbcRowSet rowSet = rowSetFactory.createJdbcRowSet();
// ...
Это не дает возможности передать ResultSet
при построении. Эти реализации не поставляются со средним драйвером JDBC (по крайней мере, у MySQL и PostgreSQL их нет). Это в основном дополнительный (дополнительный) слой поверх JDBC API в качестве префикса имени пакета javax
.
Обратите внимание, что если вы заходите так далеко, просматривая ряды, вы можете рассмотреть возможность поиска в ORM, например, Hibernate или JPA. Они обеспечивают возможности кеша первого и второго уровней.
См. также:
- Руководство JDBC - Глава 10 - RowSet
- Учебник JDBC RowSet, Oracle
- Java 8
javax.sql.rowset
сводка пакетов - Исходный код в OpenJDK 8 для Oracles com.sun. rowset, лицензия Gnu GPL 2 с исключение класса