Sobes.tech
Junior — Middle

Kunt u het concept van compositie in object-relationele representaties (ORM) uitleggen?

sobes.tech AI

Antwoord van AI

In ORM (Object-Relational Mapping) is de compositie een manier om relaties tussen objecten te modelleren, waarbij één object een ander bevat als onderdeel van zijn structuur.

Bijvoorbeeld, als je modellen User en Profile hebt en het profiel onderdeel is van de gebruiker, dan kan User een Profile object bevatten. Dit wordt in de database meestal weergegeven door middel van buitenlandse sleutels.

In Python ORM (bijvoorbeeld SQLAlchemy of Django ORM) maakt compositie het mogelijk:

  • Een object als attribuut in een ander te nestelen.
  • De levenscyclus van het geneste object samen met die van de ouder te beheren.
  • Het werken met gerelateerde gegevens te vereenvoudigen door er via de eigenschappen van het object naar te verwijzen.

Voorbeeld met SQLAlchemy:

from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Profile(Base):
    __tablename__ = 'profiles'
    id = Column(Integer, primary_key=True)
    bio = Column(String)
    user_id = Column(Integer, ForeignKey('users.id'))

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    profile = relationship('Profile', uselist=False, backref='user')

Hier bevat User Profile via de relationship, wat een voorbeeld van compositie is.