2017-08-02 2 views
0

J'ai un UserRepository à la base de données de recherche (Solr, ElasticSearch, autres ...) et j'ai ces données utilisateur dans ma base de données SQL (MySQL, PostgreSQL, d'autres ...), Ma question est quelle place est-ce que je mets ça? Dans le référentiel? Ou autre abstraction (Service, Contrôleur)?modèle de conception lorsque le service de recherche ne pas

Mon exemple est en Java, mais je l'appliquer à Java (Spring) et PHP:

public interface UserRepository extends SolrCrudRepository<User, String> {} 
+0

* what * est votre question? s'il vous plaît modifier votre réponse afin que tout le monde obtienne votre point – Lino

+0

@Lino quelle place puis-je mettre cela? Dans le référentiel? Créer un service juste pour cela? – Renan

Répondre

1

Si je comprends bien, vous vous faites les choses

Le Repository Pattern vous permet abstrait d'où proviennent les données?. Donc, vous utilisez des cas/contrôleurs/tout ce qui ne doit pas se soucier de cela

BUT le référentiel n'a pas besoin de connaître les détails sur la façon de récupérer ces données. C'est une tâche pour un DAO (Data Access Object). Un DAO encapsule les détails sur la façon dont les données sont stockées

Vous pouvez avoir plusieurs dépôt OTI qui ont accès à plusieurs sources de données et les coordonnées. par exemple.

  1. Utilisez myDAO1 pour récupérer des données utilisateur
  2. s'il n'y a pas de données utilisateur dans la source de données myDAO1 est aller chercher ensuite utiliser myDAO2 pour aller chercher une autre source de données
  3. Continuez jusqu'à ce que le dépôt trouver les données nécessaires (peut-être mettre en œuvre un Chain of responsability) ou retourner une valeur nulle ou lancer une exception ou faire ce que vous voulez faire
+0

comprendre ... Je peux créer un UserRepository et il appelle de DAO (UserSQL et UserSolr par exemple) et mes services, les contrôleurs appellent tout dépôt, ce workflow? – Renan

+0

Puis-je le faire avec hystrix? (Si vous connaissez hystrix de Netflix) – Renan

+0

1. Vérifiez tout post de blog sur Clean architecture. Cela devrait clarifier votre esprit sur le flux de travail. 2. Je ne l'ai pas utilisé Hystrix mais je dirais que vous pouvez le faire dans toute situation – Pelocho