Реализации таблиц данных

Существует несколько реализаций интерфейсов 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.