{"id":444,"date":"2024-03-30T06:55:22","date_gmt":"2024-03-30T06:55:22","guid":{"rendered":"https:\/\/devopsopen.com\/?p=444"},"modified":"2024-03-30T08:18:23","modified_gmt":"2024-03-30T08:18:23","slug":"les-orm-vs-traitements-stockees-fonctions-procedures","status":"publish","type":"post","link":"https:\/\/devopsopen.com\/index.php\/2024\/03\/30\/les-orm-vs-traitements-stockees-fonctions-procedures\/","title":{"rendered":"Les ORM VS Traitements stock\u00e9es (fonctions, proc\u00e9dures&#8230;)"},"content":{"rendered":"<h1>ORM<\/h1>\n<p>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, \u00e0 la diff\u00e9rence des impl\u00e9mentations JPA comme Hibernate qui sont des full ORM. En utilisant JPA on cr\u00e9e tout le mod\u00e8le objet \u00e0 l'image des tables. MyBatis repose sur la notion de mapper pour transformer un r\u00e9sultat de requ\u00eate en objet (fonctionnalit\u00e9 principale du framework).<br \/>\n=&gt; L'utilisation de MyBatis peut \u00eatre discut\u00e9 si nous utlisant JdbcTemplate.<\/p>\n<h2>Les avantages des ORM<\/h2>\n<ul>\n<li>Les ORM prot\u00e8ge le code contre les injections SQL<\/li>\n<li>Fa\u00e7ilite le d\u00e9veloppements surtout pour ceux qui n'ont pas de comp\u00e9tences SQL<\/li>\n<li>Dans des \u00e9quipes avec plusieurs d\u00e9veloppeurs, les modifications des structures des bases peuvent arriv\u00e9es. Les ORM peuvent d\u00e9tecter ces changements et envoyer des exceptions au d\u00e9veloppeur avant qu'il livre son code.<\/li>\n<li>Code lisible et donne une vision compl\u00e8te entre code et base de donn\u00e9es.<\/li>\n<\/ul>\n<h2>Les inconv\u00e9nients<\/h2>\n<ul>\n<li>Pour Optimiser les req\u00fbetes, il faut passer par JPQL, HQL ou SQL natif.<\/li>\n<li>Effectuer des sous-requ\u00eates SQL avec un ORM n\u00e9cessite de passer par des requ\u00eates en SQL ou des Proc\u00e9dures stock\u00e9es.<\/li>\n<li>Difficult\u00e9e \u00e0 utliser des tra\u00eetements s\u00e9p\u00e9cifiques avec des ORM notament pour les batchs.<\/li>\n<li>L'utilisation des cl\u00e9s multiples est complexe. les ORM fonctionnent g\u00e9n\u00e9ralement avec une cl\u00e9 unique. L'utilisation de cl\u00e9 technique va \u00e0 l'encontre de la compr\u00e9hension du mod\u00e8le et peuvent g\u00e9n\u00e9rer des erreurs fonctionnelles et d\u00e9grader les performances.<\/li>\n<\/ul>\n<h1>Traitement stock\u00e9s<\/h1>\n<p>Un traitement stock\u00e9s est un programme \u00e9crit en SQL ou en d'autres langages, conserv\u00e9 dans la base de donn\u00e9es.<br \/>\nContrairement aux requ\u00eates pr\u00e9par\u00e9es, qui ne sont gard\u00e9es en m\u00e9mmoire que pour la session courante.<\/p>\n<p>On distingue les traitements stock\u00e9s suivants :<\/p>\n<ul>\n<li>Les fonctions<\/li>\n<li>Les proc\u00e9dures <\/li>\n<li>Les triggers<\/li>\n<\/ul>\n<p>PI, Les traitements stock\u00e9 doivent \u00eatre au format Linux.<br \/>\nRespecter les normes SQL en \u00e9crivant le code SQL pour faciliter les migrations de SGBD.<\/p>\n<h2>Les avantages<\/h2>\n<ul>\n<li>Evite les aller-retours r\u00e9seau<\/li>\n<li>permet de s\u00e9curiser la base de donn\u00e9es, par exemple, il est possible de restreindre les droits des utilisateurs de fa\u00e7on \u00e0 ce qu'ils puissent uniquement ex\u00e9cuter des proc\u00e9dures. finis les DELETE dangereux ou les updates.<\/li>\n<li>Limite les ijections SQL.<\/li>\n<\/ul>\n<h2>Les incon\u00e9nients<\/h2>\n<ul>\n<li>Logique applicative est cod\u00e9e dans le traitement stock\u00e9.<\/li>\n<li>Charge de travail sur la base de donn\u00e9es augmente.<\/li>\n<li>La logique de programme est d\u00e9plac\u00e9e vers la base de donn\u00e9es ce qui n'est pas compatible avec le mod\u00e9le logique des applications \u00e0 tois niveau (MVC)<\/li>\n<li>La d\u00e9pendance \u00e0 la base de donn\u00e9es devient plus forte<\/li>\n<\/ul>\n<p>Le mieux est d'utiliser les boucles et les conditions dans le code (Java, Node...)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ORM Nous distinguons deux types d&#8217;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, \u00e0 la diff\u00e9rence des impl\u00e9mentations JPA comme Hibernate qui sont des full ORM. En utilisant JPA on cr\u00e9e tout le mod\u00e8le objet \u00e0 l&#8217;image des tables. MyBatis repose sur la notion de mapper pour transformer un r\u00e9sultat de requ\u00eate en objet (fonctionnalit\u00e9 principale du framework). =&gt; L&#8217;utilisation de MyBatis peut \u00eatre discut\u00e9 si nous utlisant JdbcTemplate. Les avantages des ORM Les ORM prot\u00e8ge le code contre les injections SQL Fa\u00e7ilite\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":""},"categories":[9],"tags":[20],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":5}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/devopsopen.com\/index.php\/author\/admin_bak\/"},"uagb_comment_info":6,"uagb_excerpt":"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, \u00e0 la diff\u00e9rence des impl\u00e9mentations JPA comme Hibernate qui sont des full ORM. En utilisant JPA on cr\u00e9e tout le mod\u00e8le objet \u00e0 l'image des&hellip;","_links":{"self":[{"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/posts\/444"}],"collection":[{"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/comments?post=444"}],"version-history":[{"count":3,"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/posts\/444\/revisions"}],"predecessor-version":[{"id":447,"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/posts\/444\/revisions\/447"}],"wp:attachment":[{"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/media?parent=444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/categories?post=444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/tags?post=444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}