JAVA填充POJO void方法和返回字段的方法哪个更好?

JAVA填充POJO void方法和返回字段的方法哪个更好?,java,jakarta-ee,memory-management,coding-style,pojo,Java,Jakarta Ee,Memory Management,Coding Style,Pojo,JAVA 1.8 从另一个类“人””填充类“客户””最可读/有效的方法是什么 AddressInfo、ContactPreferences和AuthorizationRoles都是具有多个字段的复杂POJO,我们需要进行额外的数据库调用和服务调用 public Customer getCustomerFromPerson(Person per) { Customer cust = new Customer(); populateAddressInfo(cust, per); populate

JAVA 1.8

从另一个类“人””填充类“客户””最可读/有效的方法是什么

AddressInfo、ContactPreferencesAuthorizationRoles都是具有多个字段的复杂POJO,我们需要进行额外的数据库调用和服务调用

public Customer getCustomerFromPerson(Person per) {
Customer cust = new Customer();
 populateAddressInfo(cust, per);
 populateContactPreferences(cust, per);
 populateAuthorizationRoles(cust, per);
 ...
 return cust;
}
vs 注: Customer.AddressInfo!=Person.AddressInfo。它们是非常小的映射,我们从DB/Soap中提取额外的数据以获得完整的Customer.Addressinfo
cust.getAddressInfo.setIsBillingAddress(Webservicecall(per.getAddressInfo)

我建议您看看Apache
BeanUtils.copyProperties

public static void copyProperties(Object dest, Object orig)
           throws IllegalAccessException, InvocationTargetException
它可能会更快地完成您想要的任务,尽管类型安全性和性能可能会受到惩罚


链接:

为什么您的联系人没有getter,例如person.GetAddressInfo?您解释的方法是,在每次调用populate*()返回新客户之前,使用不同名称的setter。我认为将其保留为setter会使其更具可读性。亲自提供的地址信息是客户所需的完整地址信息,即cust.getAddressInfo!=per.getAddressInfo。Customer.AddressInfo需要更多信息、类型转换,可能还需要额外的服务调用以及所有亲自提供的数据。AddressInfo您可以实现一个构建器模式,客户和个人之间很少有一对一的映射,因此这不是一个很好的匹配。客户需要大量附加数据才能完成,谢谢
public static void copyProperties(Object dest, Object orig)
           throws IllegalAccessException, InvocationTargetException