DTO data transfert object tuto definition
logo Axopen

18+

années
d'expérience

60+

experts
techniques

150K

écoutes de notre podcast

DTO : définition, avantages et tuto !

Découvrez le rôle stratégique des DTO dans l'optimisation des échanges de données et la performance de vos applications. Notre guide complet vous explique en détail leur définition et leurs avantages pour une architecture logicielle moderne.

image.jpg
Louis NOYARET
Mis à jour le 16 Avr 2025

Qu'est-ce qu'un DTO, Data Transfer Object ?

C'est un objet qui rend possible le transfert des données entre les couches de l'application. Il permet de ne pas exposer les entités de la base de données et de ne pas retourner des données inutiles ou sensibles.

Il permet aussi d'avoir des requêtes HTTP plus légères.

Exemple classique : un tableau côté front :

Nom Prénom Email
Doe John john.doe@yopmail.fr
Dupond Micheal dupond.micheal@yopmail.fr
Chantier Jack chantier.jack@yopmail.fr

Pour construire un DTO il ne faut pas oublier que la requête SQL a aussi son importance.

    this._dbContext.Utilisateurs
        .Include(u => u.Adresse)
        .Include(u => u.Documents)
        .Include(u => u.Service)
        .ToList();

ou

    // chargement des jointures en mode eager
    // exemple d'une mauvaise conception
    this._userRepository.findAll();

ou

    SELECT * FROM utilisateur
    INNER JOIN adresse ON adresse.id = utilisateur.adresse_id
    INNER JOIN document ON document.id = utilisateur.document_id
    INNER JOIN service ON service.id = utilisateur.service_id;

Données retournées par l'APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. :

[
    {
        "id": 1,
        "nom": "Doe",
        "prenom": "John",
        "email": "john.doe@yopmail.fr",
        "disabled": false,
        "isAdmin": true,
        "password": "123456",
        "service": {
            "id": 1,
            "nom": "Service 1"
        },
        "documents": [
            {
                "id": 1,
                "nom": "Document 1"
            },
            {
                "id": 2,
                "nom": "Document 2"
            }
        ],
        "adresse": {
            "id": 1,
            "rue": "Rue de la paix",
            "codePostal": "75000",
            "ville": "Paris"
        }
    },
    {
        "id": 2,
        "nom": "Dupond",
        "prenom": "Micheal",
        "email": "dupond.micheal.yopmail.fr",
        "disabled": false,
        "isAdmin": true,
        "password": "123456",
        "service": {
            "id": 1,
            "nom": "Service 1"
        },
        "documents": [
            {
                "id": 1,
                "nom": "Document 1"
            },
            {
                "id": 2,
                "nom": "Document 2"
            }
        ],
        "adresse": {
            "id": 1,
            "rue": "Rue de la paix",
            "codePostal": "75000",
            "ville": "Paris"
        }
    },
    {
        "id": 3,
        "nom": "Chantier",
        "prenom": "Jack",
        "email": "chantier.jack@yopmail.fr",
        "disabled": false,
        "isAdmin": true,
        "password": "123456",
        "service": {
            "id": 1,
            "nom": "Service 1"
        },
        "documents": [
            {
                "id": 1,
                "nom": "Document 1"
            },
            {
                "id": 2,
                "nom": "Document 2"
            }
        ],
        "adresse": {
            "id": 1,
            "rue": "Rue de la paix",
            "codePostal": "75000",
            "ville": "Paris"
        }
    }
]

Dans ce cas, on peut remarquer que dans le tableau nous attendons 3 informations mais que l'API nous retourne les models avec beaucoup d'informations inutiles.

Nous ne maîtrisons pas les informations qui transitent dans notre application et de plus, ce n'est pas optimisé.

Créer un DTO

Pour résoudre ce problème, nous allons créer un DTO qui va nous permettre de retourner uniquement les informations dont nous avons besoin.

    SELECT nom, prenom, email FROM utilisateur;
[
    {
        "nom": "Doe",
        "prenom": "John",
        "email": "doe.john@yopmail.fr"
    },
    {
        "nom": "Dupond",
        "prenom": "Micheal",
        "email": "dupond.micheal@yopmail.fr"
    },
    {
        "nom": "Chantier",
        "prenom": "Jack",
        "email": "chantier.jack@yopmail.fr"
    }
]

Pour conclure il est important de maîtriser les données de bout en bout de la chaine pour les raisons suivantes :

  • Sécurité
  • Performance
  • Optimisation
  • Maintenance
  • Evolutivité

C'est ce que les DTO permettent de faire !

Pour en savoir plus, n'hésitez pas à nous contacter, c'est par ici !

Pour aller plus loin

Pagination listes et tableaux : mode d'emploi

Pourquoi et comment paginer ses listes et tableaux ? Ne pas récupérer des données qui n’ont pas d’utilité immédiate. On vous explique tout !

Small right arrow

Symfony VS Laravel : comparaison des Frameworks PHP pour des APIs performantes

Laravel et Symfony sont deux frameworks PHP très populaires pour le développement d'applications web. Lorsque l'on envisage une utilisation en mode API, ces frameworks offrent des approches variées dans la gestion des endpoints, controllers, services, répositories et ORM (Object-Relational Mapping). Mais quels sont les différences fondamentales entre Laravel et Symfony sur ces aspects spécifiques ? C'est ce que nous allons découvrir dans cet article !

Small right arrow

RAG : comment ça marche techniquement ?

Un RAG (Retrieval Augmented Generation) est un système utilisé dans les entreprises pour améliorer la gestion documentaire, et notamment, faciliter la recherche dans de grosses volumétries de documents. Si vous avez déjà testé d’utiliser l’IA avec les LLM traditionnels pour ce sujet, vous avez sûrement rencontré des problématiques importantes liées au manque de contexte ou de connaissances basé sur les documents (dû à la limite de tokens d’entrée). C’est là où le RAG joue sa carte ! Un RAG a pour but d’alimenter la base de connaissances de votre IA avec vos documents. Et comme, elle se base sur vos données pour répondre aux questions (documents internes, données confidentielles, etc), les réponses sont plus pertinentes ! Dans cet article, nous plongeons au coeur du fonctionnement d’un RAG pour vous expliquer les rouages du système. Let’s go !

Small right arrow