Les ORM VS Traitements stockées (fonctions, procédures…)

ORM

Nous distinguons deux types d'ORM, les full et les micro ORM. MyBatis est un micro ORM qui se contente de faire le lien entre les mondes relationnel et objet, à la différence des implémentations JPA comme Hibernate qui sont des full ORM. En utilisant JPA on crée tout le modèle objet à l'image des tables. MyBatis repose sur la notion de mapper pour transformer un résultat de requête en objet (fonctionnalité principale du framework).
=> L'utilisation de MyBatis peut être discuté si nous utlisant JdbcTemplate.

Les avantages des ORM

  • Les ORM protège le code contre les injections SQL
  • Façilite le développements surtout pour ceux qui n'ont pas de compétences SQL
  • Dans des équipes avec plusieurs développeurs, les modifications des structures des bases peuvent arrivées. Les ORM peuvent détecter ces changements et envoyer des exceptions au développeur avant qu'il livre son code.
  • Code lisible et donne une vision complète entre code et base de données.

Les inconvénients

  • Pour Optimiser les reqûetes, il faut passer par JPQL, HQL ou SQL natif.
  • Effectuer des sous-requêtes SQL avec un ORM nécessite de passer par des requêtes en SQL ou des Procédures stockées.
  • Difficultée à utliser des traîtements sépécifiques avec des ORM notament pour les batchs.
  • L'utilisation des clés multiples est complexe. les ORM fonctionnent généralement avec une clé unique. L'utilisation de clé technique va à l'encontre de la compréhension du modèle et peuvent générer des erreurs fonctionnelles et dégrader les performances.

Traitement stockés

Un traitement stockés est un programme écrit en SQL ou en d'autres langages, conservé dans la base de données.
Contrairement aux requêtes préparées, qui ne sont gardées en mémmoire que pour la session courante.

On distingue les traitements stockés suivants :

  • Les fonctions
  • Les procédures
  • Les triggers

PI, Les traitements stocké doivent être au format Linux.
Respecter les normes SQL en écrivant le code SQL pour faciliter les migrations de SGBD.

Les avantages

  • Evite les aller-retours réseau
  • permet de sécuriser la base de données, par exemple, il est possible de restreindre les droits des utilisateurs de façon à ce qu'ils puissent uniquement exécuter des procédures. finis les DELETE dangereux ou les updates.
  • Limite les ijections SQL.

Les inconénients

  • Logique applicative est codée dans le traitement stocké.
  • Charge de travail sur la base de données augmente.
  • La logique de programme est déplacée vers la base de données ce qui n'est pas compatible avec le modéle logique des applications à tois niveau (MVC)
  • La dépendance à la base de données devient plus forte

Le mieux est d'utiliser les boucles et les conditions dans le code (Java, Node...)

Leave a Reply

Your email address will not be published. Required fields are marked *