2010-11-30 59 views
0

J'ai un SpringServlet (de Jersey) qui expose mes POJO annotés par JPA d'une manière très basique en ce moment. Par exemple, plutôt que de retourner une représentation réelle de l'objet, je viens de renvoyer un champ tel que Nom à jouer.Que dois-je faire pour sérialiser/marshaler (et inversement) les ressources qui se réfèrent à d'autres ressources?

Bien sûr je veux retourner la représentation réelle de l'objet en tant que ressource ... la partie où je suis bloqué est que si j'ai un objet de type Foo accessible via/foo/{id}/mais aussi a une relation avec le type d'objet Bar dans le cadre de Foo - Je ne veux pas sérialiser Bar dans la réponse. Je veux retourner un URI à une ressource Bar. Suis-je seul à partir d'ici - aucun framework ne gère cette partie? Surtout en ce qui concerne le chemin. Il me semble que je vais devoir créer BarResource annoté avec @Path mais aussi, lors de la sérialisation, définir l'URI pour la référence Bar POJO lue à partir d'une constante. Je ne suis pas capable de prendre un type et de rechercher une ressource (et par la suite l'annotation @Path), mais ce serait pratique, non?

Répondre

0

Vous êtes destiné à rester confus jusqu'à ce que vous effaciez la distinction entre les ressources, les représentations et les objets.

Une ressource est un concept ou une «chose» utile à l'application cliente. C'est très nébuleux. Il est identifié par un URI et est opéré en utilisant des méthodes. Il doit être nébuleux/flexible pour compenser l'ensemble très limité de méthodes.

Une représentation est un ensemble d'octets qui peuvent être transférés à travers le fil qui représente la ressource comme un instant dans le temps.

Un objet est un détail d'implémentation qui peut ou non avoir une corrélation directe avec une ressource. Les informations contenues dans une ressource peuvent être implémentées par un seul objet ou un graphe d'objet entier. Le contenu d'une ressource pourrait être stocké dans un fichier, le résultat d'une requête SQL, une transformation XSLT, à peu près n'importe quoi.

Vous pouvez ou ne pas utiliser la sérialisation d'objet pour créer des représentations de ressources. Les références entre objets peuvent se rapporter au contenu d'une même ressource ou aux liens entre ressources. Cependant, soyez très prudent en sérialisant les objets de domaine en représentations. C'est sûr d'introduire un niveau de couplage entre votre client et votre serveur que vous allez regretter.