Как выставить JAX-RS "DTO" из сущностей для REST-клиентов? - PullRequest
3 голосов
/ 02 января 2012

У меня есть веб-приложение Java EE 6, которое предлагает свои данные через веб-сервис REST JAX-RS. Сущности помечаются аннотациями JPA, а также аннотациями javax.xml.bind. Моя цель - собрать клиентский jar из моего проекта веб-приложения, который содержит аннотированные классы «DTO» JAX-RS, которые будут использоваться для демаршалинга JAX на клиентах моего веб-приложения.

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

Есть ли способ сделать это без написания классов JAX-RS дважды для веб-приложения и клиентов?

Я думал об обработке аннотаций и уничтожении всех аннотаций JPA в сущностях, это довольно изощренно, но не очень удобно. Моя вторая идея состоит в том, чтобы извлечь интерфейс необходимых геттеров / сеттеров сущностей. Вопрос в том, как обращаться с аннотациями JAX, которые размещаются у членов класса и у получателей.

Кажется, что оба способа работают как-то. Но есть ли универсальное решение для этой задачи?

Подсказка: да, я знаю способ раскрытия JPA-сущностей напрямую через отдых и его недостатки, связанные с эволюцией и т. Д. =)

1 Ответ

3 голосов
/ 02 января 2012

Вы можете предоставить метаданные JPA через XML (http://java.sun.com/xml/ns/persistence/orm_2_0.xsd) вместо аннотаций. Это даст вам отображение без зависимости пути класса.

...