Использование управления сеансами В спящем режиме в *многопоточный* приложение Swing

Я должен был использовать представления несколько раз для того, чтобы сделать странные соединения и группироваться псевдонимами.

странными соединениями, я означаю выбирать список отличных дат и затем внешнего присоединения к ним назад к таблице, из которой они произошли получать пустые записи в течение пустых дней. Я не мог выяснить никакой другой способ сделать его.

Что касается группировки псевдонимами, это, казалось, зависело от сложности формулы в псевдониме. Если псевдоним не ссылался ни на какие фактические столбцы или столбцы, которые уже группировались, все было в порядке, но псевдонимы на столбцах, которые не были включены в группировку, бросали ошибки.

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

Одно последнее преимущество использования представления: сводные таблицы в Excel. Я не думаю, что существует способ присоединиться к таблицам, или по крайней мере не в интерфейсе мастера. Могло бы быть возможно сделать, участвует в Microsoft Query, но я еще не попробовал, потому что мысль просто произошла со мной теперь.

7
задан JavaGuy 3 November 2009 в 00:06
поделиться

3 ответа

Не раскрывайте сам сеанс в API данных. Вы по-прежнему можете делать это лениво, просто убедитесь, что гидратация выполняется каждый раз из потока данных . Вы можете использовать блок (исполняемый или какой-то другой класс команд, вероятно, лучшее, что Java может сделать для вас здесь, к сожалению), заключенный в код, который выполняет асинхронную загрузку из потока данных. Когда вы находитесь в коде пользовательского интерфейса (в потоке пользовательского интерфейса, конечно), поле своего рода событие «данные готовы», которое отправляется службой данных. Затем вы можете получить данные из использования события в пользовательском интерфейсе.

1
ответ дан 7 December 2019 в 18:44
поделиться

Есть две отдельные проблемы, которые следует решать отдельно:

  1. Обработка сессий гибернации в приложениях Swing. Позвольте мне порекомендовать мою статью, посвященную этой проблеме: http://blog.schauderhaft.de/2008/09/28/hibernate-sessions-in-two-tier-rich-client-applications/

Основная идея состоит в том, чтобы иметь сеанс для каждого кадра, исключая модальные кадры, которые используют сеанс порождающего кадра. Это непросто, но работает. Это означает, что вы больше не получите никаких LLE.

  1. Как отделить поток графического интерфейса пользователя от серверной части.

Я рекомендую хранить объекты гибернации строго в внутреннем потоке, из которого они происходят. Передавайте ETD только объекты-оболочки. Если эти объекты-оболочки запрашивают значение, они создают запрос, который передается внутреннему потоку, который в конечном итоге вернет значение.

Я бы предположил три вида реализаций оболочки:

Async : запрашивает значение и получает уведомление, когда значение доступно. Он немедленно вернется с некоторым фиктивным значением. При уведомлении запускается событие PropertyChange iO, чтобы проинформировать графический интерфейс об «измененном» значении (измененном с неизвестного на реальное значение).

Синхронизация : запрашивает значение и ожидает его доступности.

Timed : смесь двух, ожидающая короткое время (0,01) секунды, прежде чем вернуться. Это позволило бы избежать множества событий изменения по сравнению с асинхронной версией.

В качестве основы для этих оболочек рекомендуется использовать ValueModel библиотеки привязки JGoodies: http://www.jgoodies.com/downloads/libraries.

0
ответ дан 7 December 2019 в 18:44
поделиться

Вы можете посмотреть Ebean ORM . Это бессессионная загрузка, и ленивая загрузка просто работает. Это не отвечает на ваш вопрос, но действительно предлагает альтернативу.

Я знаю, что Ebean встроила поддержку асинхронного выполнения запросов, что также может быть интересно для вашего сценария.

Возможно, стоит взглянуть.

  • Роб.
1
ответ дан 7 December 2019 в 18:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: