ORM sau SQL? De ce unul sau altul?

Just my 2 cents din Java world.
Am intalnit foarte multi developeri care sustin ca cel mai eficient e sa iti scrii codul in SQL si sa il rulezi.
E foarte adevarat.
La fel de adevarat si ca cel mai rapid cod este cel scris in assembler.
Pentru mine cel putin beneficiile Hibernate sunt cele referitoare la modul in care gandesc o aplicatie, in termeni de obiecte si nu tabele si cum poate face aceasta trecere de la o paradigma la asta.
Pentru unele cazuri nu ai nevoie de ORM (aplicatii cu o singura tabela cu nivel minim de normalizare).
Imediat ce avansezi spre paradigma relationala si informatie distribuita, vei gasi nevoia asta din ce in ce mai clar.

Evident e foarte greu de invatat Hibernate/ JPA. Am acasa o carte imensa :Java Persistence With Hibernate.
Vlad Mihalcea are ca singur domeniu de activitate imbuntatirea performantei aplicatiei cu Hibernate si nu someaza.

Singura iluzie e ca ar fi si mai usor (asta credeam cand abia incepusem)decat sa faci persistenta cu SQL.
De multe ori trebuie sa gandesti mult mai multe aspecte si configurari , pentru performanta si scalabilitate optime.
Mai exista si solutia de mijloc iBatis/MyBatis care te lasa oarecum la mijloc intre ORM si SQL

1 Like

Cel mai echilibrat răspuns, fix în această zonă sunt și eu.

Cred că paradigma e aceeași ca în orice alt domeniu: Use the best tool for the job.

Am o aplicație mai mare care a devenit un fel de ERP, practic cam tot e ORM, dar…am unele locuri unde am SQL pur pentru că performanța primează, și lucrez strict cu date, nu am nici o funcționalitate atașată, le preiau, le prelucrez, le stochez, end of story, operațiune practic atomică.

Până la urmă da, e vorba de paradigma în care lucrezi. Dacă lucrezi strict cu date, și toate sunt tabele pentru tine, atunci un ORM nu-și are rostul.

Dacă trebuie să lucrezi cu obiecte, relații, dependințe, și stocarea/persist-ul lor e secundară (pentru că trebuiesc stocate permanent undeva), dar acțiunea se petrece în modele sau în limbajul de programare cu care lucrezi, atunci un ORM ajută enorm. Și da, evident, ca orice tool, trebuie să-l cunoști bine ca să nu te plângi apoi că tool-ul e prost și ineficient când poate nu îl cunoști îndestul, am văzut și cazuri de genul.

Până la urmă poți merge și spre capătul celălalt, să începi să lucrezi cu ce features are baza de date, stored procedures, triggers, etc, și ajungi să întrebi de ce mai am nevoie de limbaj de programare, uite câte poate face engine-ul de bază de date potrivit (mai ales dacă mergem spre cele mai avansate gen Oracle, MS-SQL, eventual Postgres), ce mai am nevoie de Java, Python, PHP, Go? Deschizi un client de bază de date și lucrezi :slight_smile:

Dar în zilele noastre stocarea datelor e în plan secundar oarecum, de aceea ORM-urile cred că vor fi utile mult și bine.

Aș zice că e în prim plan. Toată lumea vrea să culeagă date (telematics, telemetrry, analytics, iot) de oriunde se poate și să facă bani cumva.

Realm ii mult mai rapida pe parte de query:

Practic ai un proxy direct pe obiectele din DB si e scrisa in C++ deci nu mai trece prin JVM e direct cu un level mai jos.

Meh, I’ll stick to SQL databases… credeam că era NoSQL a trecut…

1 Like