Подтвердить что ты не робот

Реализации RowSet, CachedRowSet и т.д.

До сегодняшнего дня я работал с ResultSet при обработке результатов запросов. Но сегодня я немного читал о RowSet и CachedRowset, и я понял, что они могут лучше служить моим целям. Хотя во всех примерах я читал, где RowSet и CachedRowset назывались объектами, когда я сам его пробовал в своем коде, я понял, что это интерфейсы, а в примерах они используют некоторую реализацию этих интерфейсов.

Теперь мой вопрос: где найти эти реализации, и есть ли что-то официальное?

Нужно ли загружать их или они идут с JDK?

4b9b3361

Ответ 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. Они обеспечивают возможности кеша первого и второго уровней.

См. также:

Ответ 2

RowSet и CachedRowSet реализуются драйверами JDBC.

Поставщик базы данных предоставляет драйверы, например. Oracle или MySql. Однако эти драйверы имеют смысл только в сочетании с реальной базой данных.

Ответ 3

Он поставляется с JDK.

В JDK 10 банка: jdk-10.0.2/lib/jrt-fs.jar

И пакет/класс внутри банки: javax.sql.RowSet.class

Даниэль Пиньейру

[email protected]

enter image description here

enter image description here