Motivatie ORM framework

Tibo De Peuter 2025-02-23 19:59:06 +01:00
parent 4673befa1f
commit f80f9e9b1d

@ -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: 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. - :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. 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.