2017-08-02 1 views
0

私はデータベース(solr、elasticsearch、others ...)を検索するためにUserRepositoryを持っていますが、私のSQLデータベース(MySQL、PostgreSQL、その他)にこのユーザーデータがあります。私はこれをどこに置くのですか?リポジトリで?または他の抽象化(サービス、コントローラ)?検索サービスが失敗したときのデザインパターン

私の例では、Javaである、しかし、私は、Java(春)とPHPにこれを適用します:私はあなたを理解している場合、あなたは物事をやっている

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

* what *はあなたの質問ですか?あなたの答えを編集してください。だから誰もあなたの得点を得ます。 – Lino

+0

@Lino私はこれをどこに置いていますか?リポジトリで?このためのサービスを作成しますか? – Renan

答えて

1

Repository Patternはあなたに抽象をすることができますここではのデータが得られます。したがって、ケース/コントローラ/それを気にする必要のないものを使用してください。

BUTリポジトリはそのデータを取得する方法の詳細を知る必要はありません。それはDAO (Data Access Object)の仕事です。 DAOは、データの格納方法に関する詳細をカプセル化します。

リポジトリには、いくつかのデータソースにアクセスしてそれらを調整する複数のDAOを含めることができます。例えば

  1. 使用myDAO1ユーザデータ
  2. を取得するためのユーザデータがデータソースmyDAO1に存在しない場合、リポジトリが必要なデータを見つけるまで行くキープ別のデータソース
  3. を取得するためにmyDAO2を使用し、次にフェッチされる(多分Chain of responsabilityを実装する)、nullを返すか、例外をスローするか、何をするかを定義します。
+0

理解...私はUserRepositoryを作成することができ、彼はDAO(UserSQLとUserSolrなど)を呼び出し、私のサービス、コントローラは単にリポジトリを呼び出します、これはワークフローですか? – Renan

+0

hystrixでこれを行うことはできますか? (Netflixのhystrixを知っている場合) – Renan

+0

1.クリーンアーキテクチャに関するブログ記事を確認してください。それはワークフローについてのあなたの心を明確にするはずです。 2.私はHystrixを使用していませんが、あなたはどんな状況でもそれを行うことができると言います。 – Pelocho

関連する問題