Temat: Frameworki do ORM w PHP
Witam,
rok temu byłem w podobnej sytuacji. Miałem doświadczenie wyłącznie z Hibernate, a musiałem podjąć decyzję dotyczącą ORM dla aplikacji w PHP.
Mój lokalny PHPowy guru wskazał mi dwie propozycje najbliższe Hibernate:
1. propel
Co do properla to nie wygląda źle, ale tak szybko szukając nie znalazłem w dokumentacji nic na temat mapowania relacji (jeden do wielu itp), choć np. dziedziczenie jest obsłużone w porządku.
To, co go zdyskwalifikowało u mnie rok temu, był brak obsługi relacji wiele-do-wielu. Sprawdziłem teraz, najnowsza wersja już to wspiera:
http://www.propelorm.org/wiki/Documentation/1.5/WhatsN...
Co do doctrune to przejrzałem dokumentację do wersji 2.0beta i .... jestem pod wrażeniem. S>H>I>T> muszę przyznać że nie spodziewałem się czegoś tak dojrzałego w php... nie znalazłem na pierwszy rzut oka zadnych typowych braków... chodź pewnie tak
Co nie zmienia faktu, że pewnie Cię jeszcze zaskoczy :) Zaznaczam, że moje skromne doświadczenia dotyczą wersji 1.1.4 i 1.2.2.
jak Paweł piszesz w generowanych SQL'ach mogą być babole (tego w dokumentacji nie napiszą raczej :)).... ale ogólnie wypasik.
2. Użyliśmy Doctrine 1.1.4 - wersja stabilna sprzed roku. Było w miarę miło i przyjemnie. Do czasu, kiedy przyszło nam użyć złożonego warunku w raw SQL. Doctrine zaczął sypać kompletnie nic nie mówiącymi wyjątkami, po czym okazało się, że w przypadku złożonego warunku, np "WHERE (c.foo = ?)AND(c.bar = ?)" pomiędzy słowem kluczowym a nawiasem MUSI być spacja... Znalazłem to w JIRA, tam chłopcy-doctrinowcy jasno wyartykułowali, że fix będzie w wersji 1.2. Zmigrowaliśmy zatem na 1.2.2 :)
Poza tym typu ładowania EAGER/LAZY nie uświadczysz na poziome klas mapujących, realizujesz to przez podanie wprost JOINa w zapytaniu. Nawiasem mówiąc, DQL jest naprawdę mocno inspirowany HQLem, więc pewnie poczujesz się jak w domu. Kolekcje, relacje, dziedziczenie - to działa jak złoto.
Nie pamiętam zasadniczych wad dyskwalifikujących Doctrine, sporo naszych problemów wynikało z kompletnie innej konstrukcji języka (PHP vs Java). No i musisz uważać na spory narzut wydajnościowy.
No i jeszcze do tego obsługuje Adnotacje!.. bye bye xml... muszę przyznać, że chyba się skuszę... mimo przypuszczalnych baboli w wersji beta :D
Z tego, co czytam o D2.0, to już pewnie będzie przyjemne narzędzie. Ale nie ufamy betom :)
Pozdrawiam.
Marcin MOLGA edytował(a) ten post dnia 12.08.10 o godzinie 09:51