Реализации таблиц данных
Существует несколько реализаций интерфейсов DataTable
:
Простая таблица данных
SimpleDataTable
- это первичная реализация DataTable
. В качестве базовой структуры данных она использует ArrayList
записей данных.
Данная реализация поддерживает все операции из DataTable
интерфейса, а также реализует интерфейс Cloneable
.
В отличие от других реализаций DataTable
, экземпляр SimpleDataTable
всегда знает количество записей, которые в ней содержатся. Таким образом, getRecordCount()
всегда возвращает ненулевое неотрицательное целое значение.
Таблицы данных resultset
В качестве базовой структуры данных ResultSetDataTable
использует экземпляр подкласса java.sql.ResultSet
. По сути, это реализация DataTable
вида реляционной БД, которая сама по себе представлена данным экземпляром ResultSet
.
Данная реализация поддерживает все операции доступа и большинство операций модификации, определенных интерфейсом DataTable
. Точный набор поддерживаемых операций зависит от движка БД, драйвера JDBC, а также от используемого типа результирующих данных и настроек многопоточности. Сортирующие операции не поддерживаются.
Количество записей в экземпляре ResultSetDataTable
неизвестно до полного выполнения итерации над базовым набором результатов. Когда количество записей неизвестно, getRecordCount()
возвращает null
.
Таблица данных фильтрации
FilteringDataTable
- это реализация DataTable
, которая служит фильтрующей оболочкой для другого экземпляра DataTable
. Экземпляр FilteringDataTable
не хранит никаких данных, а использует в качестве источника данных другую DataTable
. Только те данные исходной таблицы, которые удовлетворяют заданному Expression
фильтру, будут считаться принадлежащими соответствующему экземпляру FilteringDataTable
.
Данная реализация не поддерживание операции модификации.
Количество записей в экземпляре FilteringDataTable
неизвестно до полного выполнения итерации над таблицей с исходными данными. Когда количество записей неизвестно, getRecordCount()
возвращает null
.
Прокси-таблицы данных
ProxyDataTable
- это DataTable
, которая представляет экземпляр ResultSetDataTable
или FilteringDataTable
на стороне Клиента. Основная цель использования ProxyDataTable
- получение доступа к запрашиваемым записям соответствующей таблицы на сервере, не перенося содержание всей таблицы с сервера в клиент.
Данная реализация не поддерживание операции модификации
Количество записей в экземпляре ProxyDataTable
неизвестно до полного выполнения итерации над ее записями данных. Когда количество записей неизвестно, getRecordCount()
возвращает null
.