哪里更有效或方便排序数据?

时间:2013-10-17 15:07:03

标签: java jpa

我有一个Java Web应用程序,使用JPA进行存储,并遵循MVC模式。在许多方法中,我必须返回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;
   }

目前我正在通过第一种方法实现这一目标,但我对新的方式持开放态度。

1 个答案:

答案 0 :(得分:4)

排序大部分是由DB服务器完成的,但是在哪里放置你的逻辑? 我的回答是不要把它放进你的控制器。您的前端权利需要这些已排序的数据,但您可能(必须)在许多其他地方使用它,因此控制器操作职责只是提供它,但与服务/提供者/存储库协作应该是负责提供排序数据和控制器动作应该只是通过它。这种方式控制器更容易测试,您的数据更可重用。遵循超薄控制器 - 超薄视图方法和SRP。