Où (quelle couche) placer les méthodes de requête Entity, les méthodes «persist», etc.?

StackOverflow https://stackoverflow.com/questions/183366

  •  06-07-2019
  •  | 
  •  

Question

J'ai une application SEAM avec certaines entités JPA / Hibernate. Et je me demande maintenant où placer ma requête, les méthodes de persistance.

Le choix par défaut semble les mettre dans une couche de beans de session avec injection

@PersistenceContext(...) @Inject EntityManager entityManager;

Mais je pense que je préférerais avoir les méthodes sur les entités elles-mêmes. Quels sont les avantages / inconvénients?

  1. Testablity?
  2. gentillesse?
  3. Performance?

Et est-ce que quelqu'un a des liens vers les meilleures pratiques pour interagir avec EntityManager, etc. à partir de méthodes sur les entités plutôt que de beans de session?

Mieux, Anders

Était-ce utile?

La solution

Je n'ai aucune expérience de SEAM, mais de par mon expérience des projets Java, il m'a été plus facile de garder les beans à l'écart des méthodes de persistance. Ce que nous faisons habituellement:

  • avoir des haricots pour les objets métier (comme "Utilisateur" et "Paramètres" par exemple)
  • Avoir une couche DAO pouvant persister et récupérer ces beans (CRUD simple)
  • Avoir une couche de service qui sait comment gérer les haricots, et peut-être même comment construire un agrégat de haricots

De cette façon, tout est bien séparé et facile à décomposer. Les performances ne sont généralement pas un problème avec cette configuration.

Autres conseils

Oui, c'est aussi ce que j'ai fait auparavant.

En général, je pense que EJB est incroyablement prolifique, mais SEAM aide en fait un peu. C'est pourquoi, dans mon projet actuel, la couche supplémentaire de beans de session servant uniquement à interroger et à persister m'agace. J'ai le sentiment que je pourrais faire une application raisonnablement concise si je pouvais tuer cette couche ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top