我有一个 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;
}
}
Run Code Online (Sandbox Code Playgroud)
或者也许在将数据检索到页面本身时在 Manager 类中?:
public List<Product> getProducts()
{
products = controller.obtainProductList();
//Sort the list by comparators, for example;
return this.products;
}
Run Code Online (Sandbox Code Playgroud)
目前我正在使用第一种方法,但我对新方法持开放态度。
当然,排序大部分由数据库服务器完成,但是将逻辑放在哪里?我的答案是不将其放入控制器中。您的前端需要这种排序的数据,但也许您必须(必须)在许多其他地方使用它,因此控制器操作的职责只是提供它,但与服务/提供者/存储库合作,这应该是负责提供排序的数据,控制器操作应该只是传递它。这样控制器就更容易测试,并且您的数据更可重用。遵循 Slim Controllers - Slim Views 方法和 SRP。
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |