terminal

codeando_simple

terminal

menu

terminal

search_module

guest@codeandosimple: ~/system/search $ grep -r "" .

Press [ENTER] to execute search

Status

Engine: Ready

Database: Online

Index: V2.1.0_LATEST

bash -- cat mapper.md
guest@codeandosimple: ~/enterprise/patterns $ cat mapper.md

Mapper_

// "Flexibility is the key to longevity"

A Mapper is a component responsible for transferring data between two objects or systems that should not know about each other directly. Its main function is to decouple the different data representations in an application.

It is often used to transform domain objects into DTOs (Data Transfer Objects) for transmission via web services, or to map data from a database to business objects.

# When to use it?

It is extremely useful when the data structures in different layers of your application differ, or when you need to integrate external systems with their own data formats.

# Pros

  • verified

    Full Decoupling

    Allows different layers of the application to evolve independently.

  • verified

    Data Consistency

    Ensures that data is correctly transformed according to defined rules.

  • verified

    Structural Clarity

    Maintains transformation logic in a single, centralized place.

# Cons

  • warning

    Verbosity

    May require a considerable amount of manual transformation code (if automated tools are not used).

# Detailed Example in Java

An example of a Mapper to convert a User Entity into a DTO for the API:

UserMapper.java

public class UserMapper {
    public UserDTO toDTO(User user) {
        return new UserDTO(
            user.getId(),
            user.getFirstName() + " " + user.getLastName(),
            user.getEmail()
        );
    }

    public User toEntity(UserDTO dto) {
        // Logic to rebuild the entity from the DTO
    }
}

# Conclusions

The Mapper pattern is fundamental to maintaining a clean and flexible architecture, especially in distributed systems. By centralizing the transformation logic, we ensure that our application is resilient to changes in data models.