Я создаю приложение базы данных Swing на основе технологии EJB 3.Я использую Netbeans 7.0.1.Когда программа запускается, она извлекает все данные из базы данных:
private javax.persistence.Query spareQuery;
private java.util.List<Spares> spareList;
...
spareQuery = entityManager.createQuery("SELECT s FROM Spares s ORDER BY s.id");
spareList = org.jdesktop.observablecollections.ObservableCollections.
observableList(spareQuery.getResultList());
Извлечение всех данных из базы данных приводит к значительной паузе в процессе запуска.Сейчас мне нужна оболочка для интерфейса javax.persistence.Query
, которая будет выполнять следующие действия:
Инициализация:
spareQuery = entityManager.createQuery("SELECT s FROM Spares s ORDER BY s.id");
spareQuery = new MyQueryWrapper ( spareQuery );
Основная часть!После этого при вызове:
spareList = org.jdesktop.observablecollections.ObservableCollections.
observableList(spareQuery.getResultList());
Вместо ожидания всех данных, полученных от сервера, экземпляр Query
должен разделить запрос на куски, а после получения каждого фрагмента добавить данные всписок (поскольку список можно наблюдать, каждая часть данных будет отображаться в JTable
).В результате у нас будет мягкий и быстрый запуск.
Таким образом, логика работы должна быть такой:
SELECT s FROM Spares s ORDER BY s.id WHERE s.id BETWEEN 1 and 20
- Добавить данные в список.
- ...
SELECT s FROM Spares s ORDER BY s.id WHERE s.id BETWEEN 80 and 100
- Добавить данные в список.
ВОПРОС : Есть ли библиотека, которая может заменить (обернуть) EntityManager
, Query
или что-то еще для достижения плавного асинхронного извлечения данных из базы данных с использованием технологии EJB3?