Спящая ленивая загрузка + трикотаж REST = нетерпеливая загрузка? - PullRequest
2 голосов
/ 12 февраля 2010

Я занимаюсь разработкой клиент-серверного приложения с Hibernate в качестве уровня персистентности и Jersey REST для сетевого взаимодействия.

Дано пользователю с ролями:

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

Я использую шаблон предварительной загрузки (http://bwinterberg.blogspot.com/2009/09/hibernate-preload-pattern.html),, чтобы определить, какие свойства должны быть загружены Hibernate. Это прекрасно работает.

В случае 1 Hibernate не загружает ни одной роли, как предполагалось. Но как только Джерси создает XML для отправки клиенту, он считывает роли пользователя, что, в свою очередь, позволяет Hibernate загружать роли (и все другие свойства). В конце концов, Hibernate всегда загружает полное дерево наборов данных, принадлежащих пользователю.

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

Есть идеи?

1 Ответ

3 голосов
/ 12 февраля 2010
  • сделайте небольшой клон вашей сущности и установите для него пустую коллекцию, прежде чем отдать ее для сериализации

  • создать собственный прокси из проксируемой коллекции и делегировать загрузку только в некоторых случаях (первый вариант использования), а в другом

    * 1008 вернуть пустую коллекцию
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...