1

假设我们有 Java EE/Spring 应用程序,DAO 和最终的 @Service 对象向控制器提供数据。

我们构建 DAO/Service 方法来获取控制器/表示层所需的全部数据,包括两个方面:

  • 要获取哪些数据(标准、查询位置、限制计数等)
  • 要获取什么数据(懒惰/急切地获取)

现在我们可以有至少 2 个场景,使用几乎相同的方法:

  1. 获取 X 处的数据(它可能是复杂的条件/逻辑),但只提供简单的数据(延迟初始化给出)
  2. 获取 X 处的数据(与上述相同的条件/逻辑),但提供完整的初始化实体和集合等(急切的初始化给出了)。

因为控制器有处于分离状态的对象,它不能初始化“惰性部分”——我们已经通过定义获取类型或在 DAO 方法查询中做出决定。

延迟初始化解决了问题 1.,但是当我们遇到 2 号情况时,它会迫使我们在另一个 DAO/Service 方法中复制条件逻辑或创建如下方法:

getClientsFromLastMonthWithoutAddresInfo() getClientsFromLastMonthWithAddresInfo() getClientsFromLastMonthWithAddressInfoAndPersonalData()

如何解决这个问题?

4

0 回答 0