ORM¶
Hier is een overzicht van de voor- en nadelen van Flask met en zonder ORM (SQLAlchemy), gericht op eerstejaars HBO-studenten met enige Python Flask-ervaring.
Flask zonder ORM¶
Voordelen:¶
- Eenvoudig te begrijpen:
- Studenten leren direct hoe SQL werkt door expliciete queries te schrijven.
- Minder abstractie maakt het conceptueel eenvoudiger voor beginners.
- 
Volledige controle: 
- 
Je hebt volledige controle over de database-operaties. 
- 
Je begrijpt duidelijk hoe gegevens worden opgehaald, toegevoegd en gewijzigd. 
- 
Kleinere afhankelijkheden: 
- 
Geen extra bibliotheken of complexiteit zoals ORM-modellen. 
- 
Goed voor kleine projecten: 
- Voor eenvoudige applicaties is dit vaak voldoende.
Nadelen:¶
- Minder efficiënt bij grotere projecten:
- Je moet veel SQL-code schrijven, wat repetitief kan worden.
- 
Geen integratie met OOP: 
- 
Gegevens worden meestal als rijen en kolommen behandeld, niet als objecten. 
- 
Meer kans op fouten: 
- Handmatige SQL-queries maken het makkelijker om fouten zoals SQL-injecties te introduceren als je geen goede validatie toepast.
Flask met ORM (SQLAlchemy)¶
Voordelen:¶
- 
Objectgeoriënteerde benadering: 
- 
Tabellen worden gemapt naar Python-klassen, wat helpt bij het leren van OOP. 
- 
Je werkt met objecten in plaats van SQL-resultaten, wat intuïtiever kan zijn. 
- 
Snellere ontwikkeling: 
- 
Minder SQL-syntax nodig; ORM genereert de queries voor je. 
- 
Eenvoudig omgaan met relaties (bijv. Foreign Keys) via modellen. 
- 
Geschikt voor grotere projecten: 
- 
Betere schaalbaarheid en onderhoudbaarheid dankzij de structuur die ORM biedt. 
- 
Abstractie van de database: 
- Je kunt makkelijk wisselen tussen verschillende database-engines (bijv. SQLite naar PostgreSQL).
Nadelen:¶
- Steilere leercurve:
- Het begrijpen van ORM-concepten (zoals sessies en declarative models) kan lastig zijn.
- 
Minder controle: 
- 
ORM neemt bepaalde beslissingen voor je, wat verwarrend kan zijn als je niet begrijpt hoe het werkt. 
- 
Meer afhankelijkheden: 
- 
Je moet extra bibliotheken leren en beheren, zoals SQLAlchemy. 
- 
Performance-overhead: 
- ORM kan soms minder efficiënt zijn dan handgeschreven SQL.
Warning
Op Windows zijn er ingewikkelde problemen voorgekomen. Het kan zijn dat je een C++ compiler nodig hebt voor mysqlclient.
Wanneer kiezen voor wat?¶
- 
Flask zonder ORM: 
 Kies dit als studenten:
- 
Nog moeite hebben met basisconcepten zoals SQL en Python. 
- 
Een applicatie bouwen en focus willen leggen op fundamentele programmeervaardigheden. 
- 
Flask met ORM (SQLAlchemy): 
 Kies dit als studenten:
- Al comfortabel zijn met databases en SQL.
- Willen leren hoe OOP in een praktische context werkt.
- Werken aan een project dat uitbreidbaar moet zijn of meerdere relaties tussen tabellen heeft.
graph TD
    A[Start: Flask-project kiezen] --> B[Je voelt je confortabel met Python en Flask?]
    B -->|Nee| C[Begin met een simpele Flask-app zonder ORM]
    B -->|Ja| D[Je voelt je confortabel met SQL bijv. JOIN ?]
    D -->|Nee| E[Leer eerst goed SQL en begin zonder ORM]
    D -->|Ja| F[Je kent de basis van OOP ?]
    F -->|Nee| G[Gebruik Flask zonder ORM en schrijf zelf classes]
    F -->|Ja| H[Gebruik Flask met ORM SQLAlchemy]
    G --> I[Focus op applicatielogica en basisprincipes]
    H --> J[Leer OOP en ORM in de praktijk]