Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ORM vs VFS, Zastostowanie ORM i VFS w projektach
matid
post
Post #1





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Ze względu na mało kreatywnych tematów na forum php Pro proponuję taką dyskusję.
Które z rozwiązań wydaje wam się korzystniejsze:

ORM
Stricte mapowanie bazy danych do obiektów, które następnie można łatwo wykorzystać w php. Bardzo intuicyjne i wygodne, szczególnie jeśli zaimplementujemy rozwiązanie, które jest w stanie na bieżąco odwzorowywać zmiany w bazie danych (dodatkowe tabele, itd.).
Dodawanie nowej klasy to po prostu stworzenie dodatkowej tabeli, nowy obiekt to rekord.
Wadą jest brak pewnej unifikacji i kłopot z utworzeniem drzewa obiektów, ale myślę, że jest to do obejścia.
Przykład takiego rozwiązania możemy znaleźć w Ruby on Rails.

VFS
Wirtualny system plików też jest ciekawym rozwiązaniem, wprowadzającym jakby dodatkową strukturę w bazie danych, która następnie jest odwzorowywana w postaci obiektów php. Rozwiązanie o tyle dobre, że automatycznie wprowadza nam pewną strukturę drzewiastą, w której mamy nasze obiekty i w jednej gałęzi mogą znajdować się różne obiekty, np. artykuły, komentarze, pliki, itd.
Największą wadą jest to, że wprowadzamy dodatkową "warstwę" modelu, która musi te wszystkie elementy poskładać w całość i przedstawić w postaci obiektów i dodatkowych narzędzi do ich wyszukiwania/pobierania. Jest to nieco mniej intuicyjne, gdyż dodanie nowej klasy/obiektu wymaga znajomości pewnych założeń systemu plików i jeśli nie jest do tego udostępnione dodatkowe narzędzie to mamy problem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Przykładowe drzewo takiego systemu plików: http://www.binarychoice.pl/_images/p28/carbon-uml.gif
Mam nadzieję Seth, że nie masz nic przeciwko (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Oba rozwiązania mają swoje minusy, ja planowałem zaimplementować w swoich projektach VFS, ale przyglądając się prezentacjom Ruby on Rails byłem mile zaskoczony prostotą ich ORM-a. Chyba najlepszym rozwiązaniem będzie jakieś połączenie obu rozwiązań.

Cóż więcej mogę powiedzieć - do dyskusji koledzy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
splatch
post
Post #2





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Mi bardzo podobają się rozwiązania ORM ponieważ dają one na prawdę dużego kopa. Nie miałem styczności w praktyce z VFS, ale prawdę mówiąc patrząc na ORM a VFS nie widzę dużej różnicy, chociaż wydaje mi się, że mapowanie jest jakby bardziej zgeneralizowane, nie narzuca struktrury i zależności.
W ORM myśli się w kategorii obiektu tak jak nakazuje idea projektowania obiektowego a nie w kategorii plik/katalog jak przy VFSie.
Chociaż prawdę mówiąc wzorzec ActiveRecord w najprostszej postaci jest o wiele prostszy niż VFS, który polega na kompozycji.
W ORM dzięki zastosowaniu wzorca Foregin Key Mapping możemy bez problemu zrobić sobie kompozycję łącznie z self-reference.
Foregin Key Mapping umożliwia z kolei zastosowanie wzorca LazyLoad, ponieważ wiemy na jakiej podstawie dołączać kolejne rekordy, jak wygląda związek pomiędzy nimi.
Zastosowanie ORM daje możliwość stworzenia na prawdę złożonego CRUDa, a stąd niedaleko już do zaprojektuj bazę i kliknij generuj (przykład?) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Sam zastosowałem parę razy Propela (wzorowany na innym ORM dla Javy) i muszę powiedzieć że dzięki niemu cały kod jest bardziej przejżysty, nie muszę się męczyć z tworzeniem modeli i tak dalej, ponieważ kod mi się generuje ze struktury sam.
Co do tworzenia tabel na podstawie klas - myślę że to nie jest problem - zastosowanie Reflection API + odczyt komentarzy php Doca i mamy gotowce, chociaż działanie w tą stronę wydaje mi się trudniejsze. Z resztą dla Javy jest X-Doclet który wspomaga pracę z wieloma narzędziami, w tym i z Hibernate.


Jeśli ktoś poda przykład implementacji VFSa mogę dyskutować dalej.. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował splatch 8.02.2006, 19:32:52
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 17:37