我有一个 Java Web 应用程序,使用 JPA 进行存储,并遵循 MVC 模式。在许多方法中,我必须返回 List<Product>
我应该按它的名字来订购。在哪里包含排序逻辑更好?
在像这样的 Controller 方法中,在 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;
}
目前我使用的是第一种方法,但我愿意接受新的方法。
最佳答案
当然,排序大部分是由数据库服务器完成的,但是你的逻辑放在哪里?, 我的回答是不要把它放到你的 Controller 中。您的前端需要这种排序的数据,但也许您必须(将不得不)在许多其他地方使用它,因此 Controller 操作的责任只是提供它,但与服务/提供商/存储库协作应该是负责提供已排序的数据, Controller 操作应该只传递它。这样 Controller 更容易测试并且您的数据更可重用。遵循 Slim Controllers - Slim Views 方法和 SRP。
关于java - 在哪里对数据进行排序更高效或更方便?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19430435/