Een ORM (object-relational mapping) is een tool waarmee developers databaserecords kunnen lezen en schrijven alsof het gewone code-objecten zijn, in plaats van elke keer met de hand databasequery’s te schrijven. Een database bewaart data in tabellen met rijen en kolommen. Applicatiecode denkt in objecten. De ORM zit ertussen en vertaalt het ene automatisch naar het andere, zodat een developer een Klant-object kan opslaan en de ORM dat omzet in de juiste tabelupdate.

Een simpele vergelijking is een goede tolk bij een gesprek tussen twee mensen die verschillende talen spreken. Geen van beiden leert de grammatica van de ander; de tolk verwerkt elke zin in beide richtingen, zodat het gesprek gewoon loopt. De ORM doet hetzelfde tussen de wereld van object-oriented programming en de wereld van relationele databases. Dit is een vorm van abstractie: het verbergt het repeterende querywerk zodat developers zich op de echte bedrijfslogica kunnen richten. Tools als Prisma en TypeORM in JavaScript, of Eloquent in PHP, zijn bekende voorbeelden die een team vroeg in een project kiest.

Het is gemak, geen wondermiddel. De klassieke valkuil is de N+1-query, waarbij een lijst inladen en daarna de bijbehorende records honderden kleine query’s afvuurt in plaats van één. De ORM verbergt dat tot een pagina ineens vastloopt onder belasting. Voor heel complexe of zware rapporten is een handgeschreven query vaak sneller, dus ervaren teams houden beide opties open en kijken naar de SQL die de ORM echt genereert.

Bij TopDevs gebruiken we een ORM om de dagelijkse datacode schoon en consistent te houden, terwijl we voor de paar plekken waar pure snelheid het belangrijkst is alsnog ruwe query’s met de hand schrijven.