From f80f9e9b1d4e6692daa5335680560ff59ea25993 Mon Sep 17 00:00:00 2001 From: Tibo De Peuter Date: Sun, 23 Feb 2025 19:59:06 +0100 Subject: [PATCH] Motivatie ORM framework --- Design-keuzes.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/Design-keuzes.md b/Design-keuzes.md index 4c294e7..f0e2e94 100644 --- a/Design-keuzes.md +++ b/Design-keuzes.md @@ -58,4 +58,27 @@ De backend maakt gebruik van [ExpressJS](https://expressjs.com/). - :white_check_mark: Ondersteuning voor middlewares (`app.use(...)`), bv. voor logging. - :white_check_mark: Aan de hand van [tools](https://openapi-generator.tech/docs/generators/nodejs-express-server/) kan een Express server gegenereerd worden, vertrekkende van een [OpenAPI spec](https://swagger.io/docs/specification/v3_0/about/), of omgekeerd. -Een mogelijk alternatief zou bv. [fastify](https://fastify.dev/) zijn. \ No newline at end of file +Een mogelijk alternatief zou bv. [fastify](https://fastify.dev/) zijn. + +### Object-Relational-Mapping (ORM) + +**Data Mapper Patroon in plaats van Active Record Patroon** + +Dit project maakt gebruik van het Data Mapper Patroon. + +- :white_check_mark: De backend is zo meer ontkoppeld van de database, waardoor die in de toekomst eenvoudiger uitgewisseld kan worden. +- :white_check_mark: Gebruik maken van het Data Mapper Patroon biedt meer flexibiliteit tijdens het ontwerpen van de database. + +Zie ook [deze vergelijking](https://www.thoughtfulcode.com/orm-active-record-vs-data-mapper/). + +**MikroORM in plaats van TypeORM** + +Na onderzoek waren de twee kandidaten voor ORM [MikroORM](https://mikro-orm.io/) en [TypeORM](http://typeorm.io/). De volgende overwegingen werden gemaakt: + +- :white_check_mark: MikroORM concentreert zich op simpliciteit en developer-ervaring. +- :negative_squared_cross_mark: MikroORM heeft minder (geavanceerde) functies dan TypeORM. Dit kan als positief gezien worden als je de bijhorende leercurve in acht neemt. +- :negative_squared_cross_mark: TypeORM is meer robuust dan MikroORM, doordat het ouder is. TypeORM accepteert geen nieuwe feature requests en focust zich enkel nog op stabiliteit. + +Uiteindelijk werd MikroORM boven TypeORM verkozen, omdat MikroROM als moderner aangezien werd en de documentatie uitgebreid genoeg is. + +Andere alternatieven maken ofwel geen gebruik van Data Mapper Patroon, of ondersteunen bijvoorbeeld moeilijker ESM.