如何在WSDL-first方法中使用一些(例如:验证)方法编写DTO?只是不写“贫血领域模型”

时间:2013-02-06 08:22:13

标签: java wsdl dto contract-first

我首先使用WSDL。我有WSDL并使用Maven插件'cxf-codegen-plugin'生成Java代码。使用Code-first可以编写DTO,例如:

public class ServiceSearchCriteria {
    private String phoneNumber;
    private String businessId;

    public boolean validateSearchCriteria() {
        if ((phoneNumber != null) || (businessId != null)) {
            return true;
        }
        return false;
    }
    //... setters/getters etc.
}

因此,使用Code-First(Java-First)可以很容易地使用验证方法编写DTO。客户可以检查搜索条件是否得到满足。该类将由@WebService注释的WebService类返回。这将有效。

但是如何使用WSDL-First方法编写这样的DTO(使用某种方法)?

我非常喜欢WSDL-First方法(它有许多优点,但这不是写它们的地方)但我想添加方法...只是不写“贫血域模型”并允许客户端检查搜索在发送到服务器之前满足标准。

1 个答案:

答案 0 :(得分:1)

你似乎在混合各种概念。很酷,你不想拥有一个贫血的领域模型,但这与你的DTO无关,而后者又与WSDL中的类看起来没有任何关系。

DTO有州但没有行为。因此,他们只有getter / setter但不包含逻辑(例如验证)。

域模型中的对象具有状态行为(除非它们当然是贫血的。)

因此,如果需要DTO,这取决于您的架构,您将业务对象从域模型转换为DTO,反之亦然。如果您考虑从WSDL DTO生成的类可以正常,那么您需要将它们转换为业务对象。在这方面“转换”意味着转移他们的国家。