在域层或表示层中搜索条件/过滤器类?

时间:2013-06-12 11:30:59

标签: java search dto presentation

我们正在构建一个企业应用程序,它在表示层使用Spring MVC,在业务层使用EJB,使用JPA进行数据访问。应用程序需要根据用户从GUI输入的几个搜索条件支持各种实体的搜索功能。这似乎是大多数企业应用程序中相当普遍的功能,我想知道是否有任何设计模式/原则提供最佳方法。 目前,我们为每个业务实体提供了SearchCriteria类(例如AccountSearchFilter for Account)。表示层构建SearchCriteria类的对象并将其传递给业务层。业务层基于可用条件构建JPA查询,并创建实体对象的集合。该集合将传递回表示层,然后通过表示层将其转换为JSON。

这个设计有两个问题:

  1. SearchCriteria类是业务层的一部分,但它们也由表示层使用。
  2. 业务层将业务实体的集合返回到表示层。
  3. 我不喜欢在演示层和业务层之间共享类,但我不知道我们可以做些什么来解耦它。我已经搜索了关于在表示层中使用域对象的现有帖子,我不想开始讨论它是好还是坏。我已经下定决心,我不希望使用域对象的表示层。此外,创建DTO似乎重复代码,所以如果这是唯一可行的解​​决方案,那么我可以传递这个。

0 个答案:

没有答案