Ответ 1
Вопрос слишком широк, чтобы я мог ответить. Но у меня есть определенный опыт, связанный с использованием Jackson под JAXB с объектами JPA, которые могут вам показаться интересными.
В моем случае у меня была модель JPA с примерно тремя дюжинами сущностей и множеством циклических ссылок. График отношений между сущностями также был почти тесно связан. Другими словами, можно было перейти практически к любому объекту в наборе из любого другого, следуя отношениям сущностей. В моем случае, с сущностями, как описано, и Jackson 1.5, наложение аннотаций JAXB на мои объекты JPA оказалось плохим.
С одной стороны, Джексон 1.5 попал в бесконечную рекурсию по циклическим ссылкам. Я считаю ошибку оператора ошибкой, а не ошибкой. Джексон - потрясающее программное обеспечение. Кроме того, я думаю, что предстоящий выпуск 1.6 предоставляет новые функции для обработки этого JACKSON-235. Так что это может быть очень скоро!
Моя другая проблема связана с сериализованной компактностью перед лицом сильно связанных объектов. Сериализация всех моих отношений с сущностью была непрактичной. Я бы сериалировал непристойную сумму нерелевантной информации в каждом запросе наивно, следуя всем отношениям сущностей, до их полной глубины.
Я хотел указать несколько сериализаций объектов JAXB, выбрав один с соответствующими полями и отношениями в зависимости от предполагаемого использования. Но, насколько мне известно, JAXB и Jackson не предлагают такой гибкости. Они обеспечивают значительную гибкость в определении представления - что временный, как выглядят списки и т.д. - но я не думаю, что для одного объекта возможны множественные представления. Может быть, есть умный способ определить несколько представлений в JAXB или Jackson и переключиться во время выполнения... Мне было бы интересно узнать, существует ли такая вещь. Возможно, есть функция для этого, о которой я не знаю, или о некоторых обманах, которые можно сыграть с подклассом. Но я не мог найти его, поэтому в итоге я сдался и пошел с DTO.
Опять же, это все довольно специфично для модели. Возможно, это не проблемы для вас (или, может быть, у вас есть умные решения для этих проблем!)