Hvordan ser jeres bedste data access metoder ud?

Tags:    php

Det er meget oppe i tiden at man benytter sig af en eller anden form for framework til alle sine database handlinger.
Nogle benytter sig rent af SQL generator, med nogle forskellige metoder til at definere et SQL statement til deres yndlings database. Nogle pakker det ind i Data Access objekter. Nogle pakker det yderligere ind i componenter. Så er der dem der skriver rå SQL til deres databaser, både som alm. og prepared statements.
Nogle gange skal man lave joins, nogle gange skal man bruge sql funktioner, så er der sletning, opdatering osv. osv.

Kort sagt, er der rigtig mange funktioner, som dagligt benyttes i den ene eller anden form for situation. Men de fleste alm. situationer kan løses i et CRUD setup, uden at skulle sammensmelte for mange tabeller.

Hvordan ser jeres bedste/yndlings "CRUD" maskine ud, hvis den findes i et framework - hvilket, og hvorfor. :)



3 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Personligt bryder jeg mig ikke om ORM. Idéen er rar, men i praksis er det tungt, skalerer rigtigt dårligt, og ikke så nemt at debugge som hvis du sidder med SQL-queriet direkte.

Jeg koder for det meste igennem CodeIgniter når jeg udvikler PHP, og deri bruger jeg deres version af ActiveRecord(der reelt intet har med ActiveRecord at gøre), som reelt bare er chainable php-metoder der generer statements for dig.

Fx:
Fold kodeboks ind/udKode 

og så fremdeles.

Fordelen her, fremfor rene SQL-kald, er at alle dine argumenter til metoderne automatisk bliver sanitized, og at DB-librariet bruger drivers til at konstruere den specifikke SQL syntax som din valgte RDBMS tager imod. På den måde kan jeg sømløst skifte mellem Oracle og MySQL efter behov, for eksempel. Der er også en smule mere agil udvikling hentet iogmed at jeg kan fyre ting som get_where(); af istedet for at lave et helt SELECT statement, men det er begrænset i forhold til en ORM :)

Alt dette wrapper jeg så i model-klasser så min direkte databaseadgang foregår på så få punkter som muligt.



Som du selv skriver, er der mange måder at gøre det på. Selv gør jeg det forskellige måder alt efter hvilket projekt jeg arbejder på. Der er forskellige fordele og ulemper ved de forskellige måder. Jeg har altid ment at SQL skulle laves i hånden for at få den mest optimale performance, men efterhånden er jeg blevet gladere og gladere for at bruge en datamapper, fx. Hibernate/NHibernate eller Rails ActiveRecord. Teknologien er ved være så moden at det performance hit man tager ved at bruge disse værktøjer, ikke er så stort som det var før i tiden.
Engang forsøgte jeg også at lave min egen mapper for det mente jeg burde være nemt at lave. Der tog jeg grueligt fejl. Det kan være meget komplekst at lave en fornuftig mapping mellem database og objekter!
Emnet som du præsenterer er meget spændende og meget vigtigt for rigtig mange applikationer, men alligevel synes jeg det bliver omtalt alt for lidt i litteraturen og på nettet.



Jeg følger lige lidt med her..

Bruger selv mysqli/PDO tilsat nogle selv lavet extends...



t