Сериализация прокси Hibernate и получение на стороне клиента - PullRequest
3 голосов
/ 18 апреля 2010

Мне не хватает понимания того, как сгенерированный объект прокси-класса (расширенный POJO CGLib) передается на удаленный клиент и все еще сохраняет способность генерировать Lazy Init. Исключения.

Означает ли это, что существует какой-то контракт, согласно которому все переданные объекты какого-либо класса (прокси) будут повторно созданы как прокси? Где клиент получает эти сгенерированные классы? Извините, но я совершенно не понимаю.

Ответы [ 2 ]

2 голосов
/ 28 апреля 2010

Поскольку ваше приложение удаленного клиента теперь зависит от Hibernate. Если у вашего удаленного клиента нет Hibernate на пути к классам, вы получите NoClassDefFoundError. Это демонстрирует, насколько неплотна абстракция в Hibernate.

По сути, не передавайте объекты по сети - передавайте сообщения (которые затем можно использовать для создания объектов, если вы того пожелаете).

1 голос
/ 18 апреля 2010

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

Вы можете полностью инициализировать их перед отправкой, используя Hibernate.initialize(aProxy)

Для получения дополнительной информации проверьте этот ответ .

...