Есть ли способ представить Hibernate Entities как ресурсы RESTful без DTO?

Я разрабатываю простое веб-приложение, которое представляет модель домена как ресурсы RESTful. Я планирую использовать JPA2 (Hibernate) с поддержкой SpringMVC REST.

При маршалинге сущностей Hibernate в XML / JSON, если сущность отсоединяется, она создает исключение LazyLoadingException для ленивых дочерних ассоциаций. Если объект все еще подключен к Hibernate Session, он почти загрузит всю базу данных.

Я попытался с помощью Dozer CustomFieldMapper, чтобы определить, является ли свойство ленивым Hibernate Collection, который не загружен, а затем вернуть NULL.

Но если у нас есть двунаправленные ассоциации, Hibernate с нетерпением загружает Many-to-Один side и Dozer попытаются скопировать свойства, которые окажутся в бесконечном цикле, что приведет к ошибке StackOverflow.

Единственное, что мне известно для решения этой проблемы, - это использование DTO и копирование необходимых свойств только в чистые POJO (DTO) и последующее маршалинг в XML / JSON. Но для сложной модели предметной области ужасно больно копировать свойства вручную.

Есть ли какой-либо другой чистый / более простой способ (не) маршаллировать объекты Hibernate?

Ответы на вопрос(3)

Ваш ответ на вопрос