Qu'est-ce que Prisma et quelles sont ses caractéristiques ?
Selon l'équipe, Prisma est un ORM, mais conçu de manière très différente de ce qui se fait actuellement dans l'industrie. En général, les ORM sont des bibliothèques qui font correspondre les tables de votre base de données aux classes du langage que vous utilisez pour écrire votre programme. Prisma, quant à lui, est une boîte à outils de base de données. En plus, Prisma ne souffrirait pas des nombreux problèmes qui sont communément associés aux ORM. L'équipe estime en effet que l'approche des ORM traditionnels conduit à de nombreux problèmes causés par le décalage d'impédance objet-relationnel.
C'est une situation que la conception de Prisma permettrait d'éviter. L'un des principaux différentiateurs entre Prisma et un ORM est son fichier de schéma centralisé et son langage de schéma. Plutôt que d'avoir des classes dans votre application qui correspondent aux entités de la base de données, Prisma sépare vos modèles de base de données de votre code.
En outre, la CLI de Prisma utilise ce fichier de schéma pour générer automatiquement un client qui peut être utilisé dans votre code TypeScript pour interagir avec la base de données. Ce paradigme est légèrement différent de celui d'un ORM, où les instances des classes de modèles jouent ce rôle. Pour en revenir à la composition de Prisma, voici ses trois principaux composants :
Prisma Client
Pour faire court, Prisma Client génère le client utilisé dans le code de l'application. Selon l'équipe, l'un des principaux avantages de travailler avec Prisma Client est qu'il permet aux développeurs de penser en objets et offre donc une manière familière et naturelle de raisonner sur leurs données. Prisma Client n'a pas le concept d'instances de modèle. Au lieu de cela, il aide à formuler des requêtes de base de données qui renvoient toujours des objets JavaScript simples. Grâce aux types générés, vous bénéficiez également de l'autocomplétion pour ces requêtes.
De plus, pour les développeurs TypeScript, tous les résultats des requêtes de Prisma Client sont entièrement typés. Prisma semble fournir les garanties de sécurité de type les plus fortes de tous les ORM TypeScript.
Prisma Migrate
Prisma Migrate permet de modifier le schéma de la base de données. Prisma Migrate traduit le schéma Prisma en SQL nécessaire pour créer et modifier les tables de votre base de données. Il peut être utilisé via les commandes "prisma migrate" fournies par la CLI de Prisma. Bien que le SQL soit généré automatiquement sur la base du schéma Prisma, vous pouvez facilement le personnaliser en fonction de vos besoins spécifiques. Selon l'équipe, avec cette approche, Prisma Migrate trouve un excellent équilibre entre productivité et contrôle.
Prisma Studio
Prisma est également fourni avec une interface d'administration moderne pour votre base de données, Prisma Studio. Ce dernier est un éditeur visuel pour la base de données. Grâce à son interface tabulaire jugée simple, vous pouvez rapidement jeter un coup d'œil aux données de votre base de données locale et vérifier si votre application fonctionne correctement.
Selon l'équipe, ces trois outils (Prisma Client, Prisma Migrate et Prisma Studio) peuvent être adoptés ensemble ou individuellement dans tout projet Node.js ou TypeScript. Prisma prend actuellement en charge SQL Server (disponible en avant-première), PostgreSQL, MySQL et SQLite. En outre, un connecteur pour MongoDB est en cours de réalisation. Par ailleurs, Prisma est agnostique par rapport à l'application que vous construisez et complètera votre pile, quelles que soient vos technologies préférées (Next.js, GraphQL, Nest.js, Express.js, Appolo, etc.).
Prisma et TypeORM : qui deviendra la norme de l'industrie ?
TypeORM est un ORM open source pour Node.js qui tire parti des fonctionnalités modernes de JavaScript et encourage l'utilisation de TypeScript. Au vu de sa syntaxe et de sa structure, il est clair qu'il s'inspire d'ORM performants dans d'autres langages ou frameworks de programmation, tels qu'Entity Framework (.NET) et Hibernate (Java). À un haut niveau, TypeORM comprend des fonctionnalités telles que les migrations, les transactions, une CLI, et une multitude de façons d'interagir avec les entités définies dans le modèle de données de votre application.
Les entités sont l'un des principaux composants de TypeORM et, comme dans les autres ORM, ce sont des classes qui correspondent aux tables de la base de données. L'une des caractéristiques les plus puissantes de TypeORM est la façon dont vous pouvez travailler avec les entités dans votre code. Plus précisément, TypeORM prend en charge à la fois les modèles Active Record et Data Mapper. Le modèle Active Record implique que les fonctions de base de données (création, lecture, mise à jour, suppression, etc.) soient définies directement sur une classe de modèle.
Si l'on regarde maintenant le modèle Data Mapper, il est subtilement différent du modèle Active Record. En particulier, le modèle Data Mapper implique des classes distinctes de vos entités qui définissent les fonctions de la base de données (parfois appelées objets d'accès aux données). Dans ce paradigme, les entités sont de simples structures de données qui définissent leurs propriétés tandis que les classes de mappage de données exposent la fonctionnalité réelle nécessaire pour interagir avec une base de données. TypeORM fournit deux abstractions qui vous permettent d'appliquer ce modèle, les référentiels et le gestionnaire d'entités.
La différence fondamentale entre les deux est qu'un référentiel n'opère que sur un seul type d'entité. En revanche, le gestionnaire d'entités est une collection de tous les référentiels. TypeORM et Prisma offrent tous deux une "excellente" interface utilisateur pour les développeurs et un ensemble de fonctionnalités. À court terme, TypeORM devrait rester plus populaire que Prisma. En effet, TypeORM a déjà une avance considérable en matière de popularité sur Prisma et un avantage en matière de maturité (par exemple, les migrations).
À long terme, l'on estime que Prisma a la possibilité de dépasser TypeORM grâce à son solide soutien financier et à son groupe de développeurs travaillant à plein temps à l'élaboration de nouvelles fonctionnalités. En outre, TypeORM pourrait probablement être affaibli par les problèmes/bogues ouverts sur GitHub et le manque de soutien de la part des mainteneurs à plein temps. Quel que soit le résultat, les deux outils sont très prometteurs et il sera passionnant de voir comment ils se développent au fil du temps.
Source : Prisma, Comparaison entre Prisma et TypeORM
Et vous ?
Quel est votre avis sur le sujet ?
Que pensez-vous de Prisma et de ses fonctionnalités ?
Que pensez-vous de TypeORM et de ses fonctionnalités ?
Avez-vous une préférence pour l'un ou l'autre ? Pourquoi ?
Utilisez-vous plutôt un autre ORM ? Lequel ? Pourquoi ce choix ?
Selon vous, les développeurs doivent-ils utiliser les ORM ? Pourquoi ?
Voir aussi
Prisma, un outil ORM pour le développement des applications modernes. Pourra-t-il remplacer les outils ORM traditionnels ?
Prisma 2.0 est disponible en version bêta avec une nouvelle version de Prisma Client, Prisma Client 2.0, qui permet un accès aux bases de données modernes
Faut-il utiliser les ORM ou continuer d'écrire simplement des requêtes SQL ? Eli Bendersky donne son avis