我有一个与将数据映射到Java中的域对象相关的问题。我必须修改现有的逻辑,我想以适当的面向对象的方式来做。
我有一个非常大的现有查询。它由大约20个左连接组成。使用Spring的RowMapper实现,所有列(大约70个)都映射到单个平面POJO。这个POJO是不可变的(所以只有getter存在)并且有一个很好的(但很大的)构建器。
我要做的是添加第二个与旧查询非常相似的查询。唯一的区别是一个不同的左连接。因此,两个查询都有大约60个公共列,只有少数几个来自不同的左连接。
我想在这里保持不变性。此外,我需要有所有领域的吸气剂。所以,我有两个想法:
使用所有公共字段创建基础对象。然后我可以使用继承为不同的查询创建两个不同的类。
我还可以使用合成来保存具有所有公共字段的对象。但是,我需要getter方法来访问此对象的状态。在这里,我需要为所有getter实现一个代表团,我认为这不是一个好主意,因为我必须在所有包含我的常见'的类中复制粘贴getter。按组成对象。
那么,更好的是什么?或者,也许我应该使用别的东西?
提前谢谢。
答案 0 :(得分:0)
第一个解决方案的一部分 - 使用所有公共字段创建基础对象,并使用构建器模式在Class中将额外列添加为可选字段,如下所示:
optionalOne(String optionalOne) {
this.optionalOne = optionalOne;
}