Skip to content

ORM — Explained with Examples

DodaTech Updated Jun 15, 2026 2 min read

ORM (Object-Relational Mapping) maps database tables to programming language objects, letting developers work with data using familiar OOP syntax instead of SQL.

ORM stands for Object-Relational Mapping. It bridges the gap between relational databases (tables, rows, columns) and object-oriented programming (classes, objects, properties). Popular ORMs include Hibernate (Java), Entity Framework (.NET), SQLAlchemy (Python), Prisma (TypeScript), and Sequelize (Node.js).

Why ORM Matters

Writing raw SQL throughout an application mixes concerns — database logic bleeds into business logic. ORMs abstract away SQL generation, provide type safety, handle migrations, and prevent common SQL injection vulnerabilities. They also provide a consistent API regardless of the underlying database vendor.

Real-World Analogy

A translator at the United Nations. The diplomat speaks English (objects), the delegate speaks French (tables). The translator (ORM) converts between the two without either party needing to learn the other’s language. If the French delegate is replaced by a Spanish speaker, the diplomat keeps speaking English — only the translator configuration changes.

Example: ORM with SQLAlchemy

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

# Define model — maps to 'users' table
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

# Set up ORM
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()

# Create — no SQL needed
user = User(name="Alice", email="alice@example.com")
session.add(user)
session.commit()

# Read — Pythonic querying
alice = session.query(User).filter_by(name="Alice").first()
print(alice.email)  # Output: alice@example.com

Related Terms

ODM, N+1 Query, Repository Pattern, CRUD

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro