以面向对象的方式映射类似查询中的行
Mapping rows in similar queries in object oriented way
我有一个关于将数据库数据映射到 Java 中的域对象的问题。我必须修改现有的逻辑,我想以适当的面向对象的方式来做。
我有一个非常大的现有查询。它由大约 20 个左连接组成。使用 Spring 的 RowMapper 实现将所有列(大约 70 个)映射到单个平面 POJO。这个 POJO 是不可变的(所以只有 getter 存在)并且有一个很好的(但很大)构建器。
我要做的是添加与旧查询非常相似的第二个查询。唯一的区别是一个不同的左连接。因此,这两个查询都有大约 60 个公共列,只有少数其他列来自不同的左连接。
我想在这里保持不变性。此外,我需要为所有字段设置 getters。所以,我有两个想法:
创建一个包含所有公共字段的基础对象。然后我可能会使用继承来为不同的查询创建两个不同的类。
我也可以用一个composition来保存一个包含所有公共字段的对象。但是,我需要 getter 方法来访问该对象的状态。在这里,我需要为所有 getter 实现一个委托,在我看来这不是一个好主意,因为我将不得不在所有包含的 类 中复制粘贴 getter我的 'common' 对象的组成。
那么,什么更好?或者,也许我应该使用其他东西?
提前致谢。
第一个解决方案的一部分 - 创建一个包含所有公共字段的基础对象,并使用 Builder Pattern 添加额外的列作为 Class 中的可选字段,如:
optionalOne(String optionalOne) {
this.optionalOne = optionalOne;
}
我有一个关于将数据库数据映射到 Java 中的域对象的问题。我必须修改现有的逻辑,我想以适当的面向对象的方式来做。
我有一个非常大的现有查询。它由大约 20 个左连接组成。使用 Spring 的 RowMapper 实现将所有列(大约 70 个)映射到单个平面 POJO。这个 POJO 是不可变的(所以只有 getter 存在)并且有一个很好的(但很大)构建器。
我要做的是添加与旧查询非常相似的第二个查询。唯一的区别是一个不同的左连接。因此,这两个查询都有大约 60 个公共列,只有少数其他列来自不同的左连接。
我想在这里保持不变性。此外,我需要为所有字段设置 getters。所以,我有两个想法:
创建一个包含所有公共字段的基础对象。然后我可能会使用继承来为不同的查询创建两个不同的类。
我也可以用一个composition来保存一个包含所有公共字段的对象。但是,我需要 getter 方法来访问该对象的状态。在这里,我需要为所有 getter 实现一个委托,在我看来这不是一个好主意,因为我将不得不在所有包含的 类 中复制粘贴 getter我的 'common' 对象的组成。
那么,什么更好?或者,也许我应该使用其他东西?
提前致谢。
第一个解决方案的一部分 - 创建一个包含所有公共字段的基础对象,并使用 Builder Pattern 添加额外的列作为 Class 中的可选字段,如:
optionalOne(String optionalOne) {
this.optionalOne = optionalOne;
}