O que é uma boa estratégia para converter entidades jpa em recursos repousantes?

Os recursos restful nem sempre possuem um mapeamento um-para-um com suas entidades jpa. A meu ver, há alguns problemas que estou tentando descobrir como lidar:

Quando um recurso possui informações que são preenchidas e salvas por mais de uma entidade.Quando uma entidade tem mais informações que você deseja enviar como um recurso. Eu poderia usar o Jackson@JsonIgnore mas eu ainda teria os números 1, 3 e 4.Quando uma entidade (como uma raiz agregada) possui entidades aninhadas e você deseja incluir parte de suas entidades aninhadas, mas apenas para um determinado nível de aninhamento como seu recurso.Quando você deseja excluir uma parte de uma entidade quando é parte de uma entidade pai, mas exclui uma parte separada quando sua parte de uma entidade pai diferente.Referências circulares Blasted (eu tenho isso principalmente trabalhando comJSOG usando Jackson@JsonIdentityInfo)

Soluções possíveis: A única maneira que eu poderia pensar que lidaria com todos esses problemas seria criar um monte de classes de "recursos" que teriam construtores que pegaram as entidades necessárias para construir o recurso e colocar getters e setters necessários para esse recurso nele . Isso é um exagero?

Para resolver 2, 3, 4 e 5 eu poderia apenas fazer um pré e pós processamento na entidade real antes de enviá-la para Jackson para serializar ou desserializar meu pojo em JSON, mas isso não resolve o problema 1.

Estes são todos os problemas que eu acho que os outros teriam encontrado e estou curioso sobre quais soluções as outras pessoas têm. (Atualmente estou usando JPA 2, Spring MVC, Jackson e Spring-Data, mas aberto a outras tecnologias)

questionAnswers(4)

yourAnswerToTheQuestion