Skip to main content

What is a DTO in spring Boot?

DTO, which stands for Data Transfer Object, is a design pattern conceived to reduce the number of calls when working with remote interfaces.the main reason for using a Data Transfer Object is to batch up what would be multiple remote calls into a single one. For example, lets say that we were communicating with a RESTful API that exposes our banking account data. In this situation, instead of issuing multiple requests to check the current status and latest transactions of our account, the bank could expose an endpoint that returned a DTO summarizing everything. As one of the most expensive operations in remote applications is the round-trip time between the client and the server, this coarse-grained interface can help improving performance by a great deal. ModelMapper Introduction To avoid having to write cumbersome/boilerplate code to map DTOs into entities and vice-versa, we are going to use a library called ModelMapper. The goal of ModelMapper is to make object mapping easy by automatically determining how one object model maps to another. This library is quite powerful and accepts a whole bunch of configurations to streamline the mapping process, but it also favors convention over configuration by providing a default behavior that fits most cases. The user manual of this library is well written and can be a valuable resource if time comes where we need to tweak the mapping process. To give a little taste of what this library can do, let's say that we had a User like that:

// assume getters and setters

class User {

long id;

String firstName;

String lastName;

String email;

String password;

String securitySocialNumber;

boolean isAdmin;

}

And wanted to expose just the id, firstName, and email. By using ModelMapper we would have to create a DTO like this:

// assume getters and setters

class UserDTO {

long id;

String firstName;

String email;

}

And then call ModelMapper as follows:

ModelMapper modelMapper = new ModelMapper();

// user here is a prepopulated User instance

UserDTO userDTO = modelMapper.map(user, UserDTO.class);

That is, only by defining the structure that we want to expose and by calling modelMapper.map, we achieve our goal and hide what is not meant to be exposed. One might argue that libraries like Jackson provide annotations to ignore some properties when serializing objects, but this solution restrict developers to a single way to express their entities. By using DTOs and ModelMapper, we can provide as many different versions (with different structures) of our entities as we want. A data transfer object (DTO) is an object that is used to encapsulate data, and send it from one subsystem of an application to another. DTOs are commonly used in n-tiered web applications to transfer data between model and view. A DTO differs to the model and DAOs (which persist and retrieve data from the database) in that a DTO does not have contain any business logic except for storage and retrieval of its own data. A DTO’s data can be aggregated from several database tables or other data sources. The main benefit of using DTOs is that they can reduce the amount of data that needs to be sent across the wire in web applications. The following text describes a simple example of a DTO in a Java-based library-like web application. The model of the application consists of two simple classes, Person and Book. The main class is Person which has the following attributes: private int personId; private String name; private String address; private String telephone; private String email; private ArrayList books The Book class includes a bookId, title, author and a personId which serves as a foreign key between the tables of the database which form a typical 1:M relationship. In this application, a servlet named AdminMemberships calls page adminMembership.jsp to allow library members and their books to be displayed and deleted by librarians. AdminMembershipDTO (illustrated below) is a simple Java class with instance variables for a Person and a boolean attribute hasBooks which tests if that Person has any Books on loan.

Comments

Popular posts from this blog

What skills Java Programmers should learn in 2020

Here is my list of things a Java developer should learn in 2020: 1. DevOps (Docker and Jenkins) This is one area where I am seeing a lot of traction last year as more and more companies are moving into DevOps and adopting continuous integration and deployment. DevOps is very vast and you need to learn a lot of tools and principles and that's what overwhelm many developers. This means if you are an experienced Java programmer with a passion for managing the environment, automation and improving overall structure, you can become a DevOps Engineer. 2. Git Git and Github have been around some time and while I have used Git in past with Eclipse, but I am yet to become master of Git on the command line, and I am not alone Many programmers haven't mastered Git yet? Simply because they didn't need it yet as there code might be in SVN or CVS. Since now most of the companies are migrating their projects from SVN, CVS to Git, its high time to learn and ma...

JDK 25: The new features in Java 25

 Java Development Kit (JDK) 25, scheduled for release in September 2025, is set to introduce several significant enhancements. Here's an overview of the notable features: 1. Stable Values API (Preview): This feature introduces stable values—objects holding immutable data treated as constants by the Java Virtual Machine (JVM). By allowing greater flexibility in initialization timing compared to final fields, stable values aim to improve application startup times. They enable performance optimizations akin to constant-folding, previously exclusive to JDK code, and ensure thread-safe, single-time initialization. This decouples the creation of stable values from their initialization without significant performance penalties.  2. Removal of 32-bit x86 Port: JDK 25 plans to eliminate both the source code and build support for the 32-bit x86 port, which was deprecated in JDK 24. Maintaining this port has become less beneficial, especially with the challenges in keeping it updated wit...

Hanumankind’s ‘Run It Up’: A New Wave in Indian Hip-Hop

 Indian rapper Hanumankind, born Sooraj Cherukat, has recently released a new single titled "Run It Up," produced by Kalmi. The official music video debuted last week and showcases Hanumankind's dynamic performance style.  Prior to this release, Hanumankind gained international recognition with his 2024 hit "Big Dawgs," also produced by Kalmi. The track's innovative music video, featuring Hanumankind performing within a "well of death" motordrome, contributed to its viral success.  "Run It Up" continues Hanumankind's exploration of blending traditional Indian musical elements with contemporary hip-hop beats. The track reflects his unique style, influenced by his upbringing in both Kerala, India, and Houston, Texas.  Fans and critics have praised "Run It Up" for its energetic rhythm and catchy hooks. Discussions on platforms like Reddit highlight the song's fusion of genres and its potential to further elevate Hanumankind...