2010-10-03 3 views
5

J'ai certains objets Java capables de persistance avec tous les @annotations dans mon application web. Tous ces objets résident dans une couche de données. Est-ce une bonne pratique d'utiliser ces objets de persistance comme objets de transfert de données? Par exemple, si je souhaite renvoyer les données extraites du magasin de données, devrais-je renvoyer directement ces objets de persistance ou dois-je copier manuellement les données dans un DTO intermédiaire et les renvoyer à d'autres couches? Quelle approche suggérez-vous?Entités de persistance en tant qu'objets de transfert de données

Répondre

1

Je dirais qu'il est OK pour le faire (en fait le principal avantage de ces ORM étaient d'utiliser ces objets de domaine dans différentes couches w/o ayant DTO inutiles) si vous suivez les directives suivantes:

  1. Vous ne prolongez pas les limites de session, c'est-à-dire que les modifications liées à la base de données doivent toujours être effectuées à l'aide de la couche d'accès aux données que vous avez définie.
  2. Toutes les données dont vous avez besoin dans une autre couche (couches au-dessus du calque d'accès aux données comme Couche logique et couche de présentation) sont pré-remplies dans ces objets sinon vous obtiendrez des exceptions selon le comportement ORM.
  3. Ne pas étendre les limites de session pour résoudre le problème mentionné au numéro 2
+0

+1 bien dit. C'est exactement ainsi que nous les utilisons dans notre produit. –

0

Je n'ai jamais eu besoin du niveau d'abstraction supplémentaire fourni en copiant l'instance de persistance dans une classe DTO différente.

1

Si vous êtes absolument certain qu'aucune copie ne se retrouvera dans le stockage de session ou ne sera conservée/migrée vers une autre instance/quelque chose, il n'est pas nécessaire de le faire.

Si vous avez besoin de garder ces objets sur plusieurs sessions/demandes, alors c'est logique. Un autre cas d'utilisation est lorsque vous devez découpler très login et la couche de persistance (c'est-à-dire pour permuter différentes couches de persistance) alors le couplage à travers les annotations pourrait être gênant.

Questions connexes