Dozer 1.5 - Helping the <buzzword>SOA</buzzword> mapping problem


Industry news: Dozer 1.5 - Helping the <buzzword>SOA</buzzword> mapping problem

  1. Dozer 1.5.8 - Helping the <buzzword>SOA</buzzword> mapping problem between non-built-in data type information and domain objects.

    Using a top-down approach to building <buzzword>Web Services</buzzword> you typically build request/response messages using an XSD schema. These schema objects are then generated into complex Java classes. These message objects should not be confused with or used as domain objects. Tired of mapping these objects to your domain by hand? Dozer allows you to map Java Bean to Java Bean objects. Dozer can also be used to map your <buzzword>Hibernate</buzzword> data transfer objects to some other form of object.

    Dozer will make sure that your data transfer objects from the database do not bleed into the presentation layer or into external consumers. It can also help map your domain objects to external APIs calls (i.e. Web Services) and vice-versa.

    These are just a couple of the mapping problems dozer can help with. Dozer is a powerful, yet simple Java Bean to Java Bean mapper that recursively copies data from one object to another. Typically, these Java Beans will be of different complex types.
    Dozer fully supports using the inversion of control pattern for run-time configuration with frameworks like <buzzword>Spring</buzzword>.

    The mapper is used any time you need to take one type of Java Bean and map it to another type of Java Bean. Most field mapping can be done automatically by Dozer using reflection, but any custom mapping can be pre-described in XML format. Mapping is bi-directional so only one relationship between classes needs defining. If any property names on both objects are the same you do not even need to do any explicit property mapping for these fields.

    A mapping framework is useful in a layered architecture where you are creating layers of abstraction by encapsulating changes to particular data objects vs. propagating these objects to other layers (i.e. external service data objects, data transfer objects, or internal service data objects).
  2. How does this perform? Anyone have any numbers?