Piotrek Kaźmierczak

Piotrek Kaźmierczak sky is the limit...

Temat: [Symfony2] Model vs Entity vs Document

Witam,
zaczynam przenosić swój nieukończony projekt z s1 do S2 i chcę dalej go rozbudowywać właśnie w nowym frameworku.

Pojawia się jednak wiele pytań lub problemów...

Aktualnie głowię się nad modelami. Czytałem jakieś pojedyncze wpisy w języku angielskim, ale nie pomogły mi zrozumieć idei.
Z tego co wiem Document jest jakby odzwierciedleniem Entity ale dla nierelacyjnych bd typu MongoDB.

Moje prośba czy ktoś kto to kuma, mógł mi wytłumaczyć czym jest model a czym entity?
W moim rozumieniu powinno być tak, że entity czyli encja jest jakimś tam bytem, a model zawiera logikę biznesową.

Co jednak jeśli chcemy połączyć logikę biznesową z encją?
W s1 mieliśmy takie coś jak np BaseEntity i Entity, gdzie BaseEntity zawierało informacje o atrybutach z bazy i relacjach. A w Entity sobie można było dopisać logikę charakteryzującą obiekt.

Jak to powinno się zrobić w S2? Tak, żeby było pro. W którym miejscu deklarować w annotations właściwości encji, co po czym powinno dziedziczyć lub czy są jakieś inne koncepcje?
Tak żeby doctrine:generate:entities sobie poradził?

Z góry dzięki za odpowiedź.

Jeszcze taki mały offtop do dyskusji, pisałem o tym na forum symfony lab ale nikt nie odpisał.
Nie sądzicie, że mechanizm fixtures w s1 był przyjemniej rozwiązany?

Pzdr

konto usunięte

Temat: [Symfony2] Model vs Entity vs Document

Encja jest stosowana w ORM, Dokument w ODM. Na potrzeby zwykłych projektów, gdy nie korzystasz z MongoDB nie ma potrzeby pamiętania o istnieniu Dokumentu i posługujesz się Encją.

MongoDB to baza, w której każdy rekord może mieć swoją strukturę, dlatego robienie dla niej encji mijałoby się z celem, stąd konstrukt Dokumentu.

W porównaniu do D1:
+ Encja jest mniej więcej odpowiednikiem klasy BaseTwojModel
+ Logika do obiektu realizowana jest za pomocą odpowiednich Listenerów Eventów (ciężko znaleźć polski odpowiednik ;) )
+ Zapytania o kolekcje znajdują się w repozytoriach

Anotacje deklaruje się w plikach Encji, tam zawiera się informacje o typie danych czy relacjach.

Do czego chcesz zastosować mechanizm fixtures?

konto usunięte

Temat: [Symfony2] Model vs Entity vs Document

Piotrek Kaźmierczak:

Jeszcze taki mały offtop do dyskusji, pisałem o tym na forum symfony lab ale nikt nie odpisał.
Nie sądzicie, że mechanizm fixtures w s1 był przyjemniej rozwiązany?

Na początku też wydawało mi się, że w poprzedniej wersji fixtures-y ładował się łatwiej, ale teraz właśnie dodaje ogromne ilości fixtures-ów w projekcie (S2) i uważam, że wcale nie jest to bardziej skomplikowane a po prostu inne. No i nie trzeba pamiętać identyfikatorów (szczególnie przydatne jak trzeba duże ilości danych wstawić do bazy) i można spokojnie operować na metodach obiektów (potrzebne sporadycznie, ale na przykład przy ustawianiu hasła dla usera się przydaje).
Piotrek Kaźmierczak

Piotrek Kaźmierczak sky is the limit...

Temat: [Symfony2] Model vs Entity vs Document

Dzięki chłopaki za odzew.

Krzysztof - mechanizm fixtures do załadowania początkowej zawartości bazy danych lub danych testowych.

Wracając do tematu. Np biorąc pod lupę FOSUserBundle tam Entity dziedziczą po klasach abstrakcyjnych z Modelu, które zawierają wszystkie atrybuty itp.

Co do listenerów chodzi Ci o te Doctrine Listeners tak? Rozumiem reagowanie na jakieś preUpdate czy prePersist.
Ale znowu biorąc prosty przykład ze wspomnianej FOSUserBundle takie operacje jak porównanie obiektów czy (de)serializacja zawarte są modelu, który jest klasą bazową dla Encji ;/. Gdyby były w EventListenerze to na jaki event miały by reagować - na żaden, są wywołaniami samymi w sobie.

Dalej nie czaje ;]
Alan Gabriel B.

Alan Gabriel B. Software Engineer,
IFX

Temat: [Symfony2] Model vs Entity vs Document

No właśnie - dlaczego developerzy FOSUserBundle zrobili ten podział?
Przecież wszystko to POPO i w teorii jedną klasę można by jednocześnie zmapować na dokument i encję.

Potrafi ktoś to uzasadnić?

konto usunięte

Temat: [Symfony2] Model vs Entity vs Document

A jak się pojawią różnice w implementacji dla Dokumentu i Encji ? To wtedy architektura jest gotowa.

konto usunięte

Temat: [Symfony2] Model vs Entity vs Document

Poza tym mam dziwne wrażenie że Doctrine czy Symfony lubi mieć encje w katalogu Entity i tam też programiści jej szukają więc kolejny plus.
Piotrek Kaźmierczak

Piotrek Kaźmierczak sky is the limit...

Temat: [Symfony2] Model vs Entity vs Document

Michał ma rację. Wystarczy samemu napisać jakieś bundle i wszystko staje się jaśniejsze.

konto usunięte

Temat: [Symfony2] Model vs Entity vs Document

Alan Gabriel Bem:
No właśnie - dlaczego developerzy FOSUserBundle zrobili ten podział?
Przecież wszystko to POPO i w teorii jedną klasę można by jednocześnie zmapować na dokument i encję.

Potrafi ktoś to uzasadnić?

Model w FOS/UserBundle powstał po to żeby oddzielić ich niezbędną logikę od elementów które sam dodasz sobie do encji. Możesz wszystko scalić jeśli chcesz - ale tak po prostu jest czytelniej dla Ciebie.

Następna dyskusja:

[Symfony2] problem z entity...




Wyślij zaproszenie do