环境:
- 爪哇
- 春天
- MVC 模式
- 休眠
说明:
好的,假设我有一个包含两个域对象的 Web 应用程序:
- 用户
- 报告
一个用户可以有很多报告(一对多关系)。请考虑报表是一个非常复杂的对象,具有很多属性。
用户等级:
public class User {
private Set<Report> reports = new HashSet<Report>();
}
报告类:
public class Report {
//...so maaaaaaany attributes
private String name;
}
假设我需要显示一个 html 页面,该页面显示一个带有相关报告列表的用户配置文件。只有报告的名称出现在列表中。请评论这些注意事项:
- 由于内存节省问题,我不认为急切地加载报告,所以我会变得懒惰。
- 即使我变得懒惰,关键是我实际上只需要报告的名称。我不想加载大量信息只是为了挑选报告名称!
所以一个可能的解决方案是修改 User 类如下:
public class User {
private Set<Report> reports = new HashSet<Report>();
private List<String> reportNames;
}
从报告中获取所需信息给用户。在我看来,它带来了两个后果:
- 报告名称列表必须保持更新
- 我打破了对象域之间的分离,用我无法轻松检索的信息填充用户。这种方法甚至可能是有效的,但它非常难看。
那么有没有很好的解决方案来解决这个问题呢?我认为这是开发人员的常见问题。