Object-Relational Mapper (ORM)
Object-Relational Mapper (lühidal ORM) on tarkvaraline komponent, mis vahendab andmeid meie lähtekoodi ja andmebaasi vahel. Lähtekoodis defineerime me klassid, mis esindavad reaalelulisi objekte ning sisaldavad nendega seotud toiminguid ja loogikat. Andmebaasis asuvad neile klassidele vastavad tabelid, kus hoitakse objektide andmeid. Rakenduse tasemel meeldib meile kõige enam kirjutada päringuid oma klasside keeles, sest see on koht, kus elab äriloogika. Andmebaasi me kasutame andmete säilitamiseks.
Milleks seda vaja on?
Iseenesest ei ole keerukas kirjutada C# peal koodi, mis otse andmebaasist andmeid küsib, kuid objektide konstrueerimiseks, nende muutuste jälgimiseks, korrektseks salvestamiseks jne peaksime aga kirjutama väga palju täiendavat koodi. Lisaks mahule on üks mure veel - me peame lahendama keerukaid probleeme ning tundma andmebaaside hingeelu väga hästi, et neist väljakutsetest meil jõud üle käiks.
See on koht, kus ORM-id meile appi tulevad. Meie kirjutame oma klasse kasutades päringuid ning need päringud teisendatakse ORM-i poolt andmebaasi päringuteks. Andmebaasist päringule vastuseks tulnud andmetest teeb ORM meile valmis meie klassidele vastavad objektid.
ORM-ide ülesanded
ORM-ide ülesanded võib kokku võtta selliselt:
- Andmevahetus lähtekoodi ja andmebaasi vahel
- Objektpäringute teisendamine andmebaasi päringuteks
- Andmebaasist loetud andmete teisendamine objektideks
- Objektide monitoorimine (mis on muudetud, mis on lisatud, mis on kustutatud)
- Keerukamad ülesanded nagu andmebaasi lukkude ja konkurentsusega tegelemine
- Transaktsioonide haldamine