3

ストレージに JPA を使用し、MVC パターンに従っている Java Web アプリがあります。多くのメソッドでList<Product>、名前で注文する必要がある を返さなければなりません。並べ替えロジックを含める方が良いのはどこですか?

このようなコントローラーメソッドでは、Queryそれ自体で:

   public List<Product> obtainProductList()
   {
      Query query = em.createQuery("SELECT g FROM Product g ORDER BY g.name");
      List<Product> ret = query.getResultList();

      if (ret == null)
      {
         return new ArrayList<>();
      }
      else
      {
         return ret;
      }
   }

それとも、ページ自体にデータを取得する瞬間に Manager クラスにあるのでしょうか?:

   public List<Product> getProducts()
   {
      products = controller.obtainProductList();
      //Sort the list by comparators, for example;
      return this.products;
   }

現在、私は最初の方法でそれをやっていますが、新しい方法を受け入れています。

4

1 に答える 1

4

もちろん、ソートはほとんどDBサーバーによって行われますが、ロジックをどこに配置しますか?私の答えは、コントローラーに配置しないことです。このソートされたデータはフロントエンドで必要ですが、他の多くの場所で使用する必要がある場合があるため、コントローラーのアクションの責任はそれを提供することだけですが、サービス/プロバイダー/リポジトリと協力する必要がありますソートされたデータの提供を担当し、コントローラーアクションはそれを渡すだけです。これにより、コントローラーのテストが容易になり、データの再利用が容易になります。Slim Controllers - Slim Views アプローチと SRP に従ってください。

于 2013-10-17T19:39:13.993 に答える