Gdybyś miał zmotywować „plusów”, dlaczego używałbyś ORM do zarządzania / klienta, jakie byłyby tego powody?
Postaraj się zachować jeden powód dla każdej odpowiedzi, abyśmy mogli zobaczyć, co zostanie uznane za najlepsze powody
Gdybyś miał zmotywować „plusów”, dlaczego używałbyś ORM do zarządzania / klienta, jakie byłyby tego powody?
Postaraj się zachować jeden powód dla każdej odpowiedzi, abyśmy mogli zobaczyć, co zostanie uznane za najlepsze powody
Odpowiedzi:
Bardziej abstrakcyjny i przenośny dostęp do danych. Klasy implementacyjne ORM potrafią pisać SQL specyficzny dla dostawcy, więc nie musisz tego robić.
Najważniejszym powodem używania ORM jest to, że możesz mieć bogaty, zorientowany obiektowo model biznesowy, a jednocześnie móc go przechowywać i szybko pisać efektywne zapytania w relacyjnej bazie danych. Z mojego punktu widzenia nie widzę żadnych rzeczywistych korzyści, jakie daje dobry ORM w porównaniu z innymi generowanymi DAL innymi niż zaawansowane typy zapytań, które możesz napisać.
Jeden rodzaj zapytania, o którym myślę, to zapytanie polimorficzne. Proste zapytanie ORM może wybrać wszystkie kształty w bazie danych. Otrzymujesz z powrotem kolekcję kształtów. Ale każda instancja jest kwadratem, okręgiem lub prostokątem w zależności od swojego dyskryminatora.
Innym typem zapytania byłoby takie, które chętnie pobiera obiekt i jeden lub więcej powiązanych obiektów lub kolekcji w jednym wywołaniu bazy danych. Np. każdy obiekt kształtu jest zwracany z wypełnionymi zbiorami wierzchołków i boków.
Przykro mi, że nie zgadzam się z tak wieloma innymi tutaj, ale nie sądzę, że generowanie kodu samo w sobie jest wystarczającym powodem, aby korzystać z ORM. Możesz napisać lub znaleźć wiele dobrych szablonów DAL dla generatorów kodu, które nie mają narzutu koncepcyjnego lub wydajnościowego, jak w przypadku ORM.
Lub, jeśli myślisz, że nie musisz umieć pisać dobrego SQL, aby używać ORM, znowu się z tym nie zgadzam. Może być prawdą, że z perspektywy pisania pojedynczych zapytań poleganie na ORM jest łatwiejsze. Ale w przypadku ORM zbyt łatwo jest tworzyć procedury o niskiej wydajności, gdy programiści nie rozumieją, jak ich zapytania działają z ORM i SQL, na które tłumaczą.
Posiadanie warstwy danych, która działa z wieloma bazami danych, może być zaletą. Jednak nie jest to jeden, na którym musiałem często polegać.
Na koniec muszę powtórzyć, że z mojego doświadczenia wynika, że jeśli nie używasz bardziej zaawansowanych funkcji zapytań swojego ORM, istnieją inne opcje, które rozwiązują pozostałe problemy przy mniejszej liczbie uczenia się i mniejszej liczbie cykli procesora.
O tak, niektórzy programiści uważają, że praca z ORMami jest fajna, więc ORMy są również dobre z punktu widzenia utrzymania zadowolenia programistów. =)
Przyspieszenie rozwoju. Na przykład wyeliminowanie powtarzającego się kodu, takiego jak mapowanie pól wyników zapytania na elementy składowe obiektu i odwrotnie.
Obsługa enkapsulacji OO reguł biznesowych w warstwie dostępu do danych. Możesz pisać (i debugować) reguły biznesowe w preferowanym języku aplikacji, zamiast niezgrabnych wyzwalaczy i języków procedur składowanych.
Generowanie kodu standardowego dla podstawowych operacji CRUD. Niektóre struktury ORM mogą bezpośrednio sprawdzać metadane bazy danych, odczytywać pliki mapowania metadanych lub używać deklaratywnych właściwości klas.
Możesz łatwo przejść do innego oprogramowania bazy danych, ponieważ tworzysz abstrakcję.
Rozwój szczęścia, IMO. ORM usuwa wiele podstawowych rzeczy, które musisz wykonać w SQL. Utrzymuje prostą bazę kodu: mniej plików źródłowych do zarządzania, a zmiany schematów nie wymagają godzin utrzymania.
Obecnie używam ORM i przyspieszyło to mój rozwój.
Aby zminimalizować powielanie prostych zapytań SQL.
Powodem, dla którego się tym zajmuję, jest uniknięcie wygenerowanego kodu z narzędzi DAL VS2005 (mapowanie schematu, TableAdapters).
DAL / BLL, który utworzyłem ponad rok temu, działał dobrze (do tego, do czego go zbudowałem), dopóki ktoś inny nie zaczął go używać do korzystania z niektórych wygenerowanych funkcji (o których nie miałem pojęcia)
Wygląda na to, że zapewni znacznie bardziej intuicyjne i czystsze rozwiązanie niż rozwiązanie DAL / BLL ze strony http://wwww.asp.net
Myślałem o stworzeniu własnego generatora kodu SQL Command C # DAL, ale ORM wygląda na bardziej eleganckie rozwiązanie
Kompilacja i testowanie zapytań.
Wraz z ulepszaniem narzędzi ORM, łatwiej jest szybciej określić poprawność zapytań dzięki błędom czasu kompilacji i testom.
Kompilowanie zapytań pomaga programistom szybciej znajdować błędy. Dobrze? Dobrze. Ta kompilacja jest możliwa, ponieważ programiści piszą teraz zapytania w kodzie przy użyciu ich obiektów biznesowych lub modeli zamiast tylko ciągów instrukcji SQL lub SQL.
Jeśli używasz poprawnych wzorców dostępu do danych w .NET, możesz łatwo przetestować logikę zapytań w kolekcjach pamięci. Przyspiesza to wykonywanie testów, ponieważ nie musisz uzyskiwać dostępu do bazy danych, konfigurować danych w bazie danych ani nawet uruchamiać pełnego kontekstu danych. [EDYCJA] To nie jest tak prawdziwe, jak myślałem, że to jednostka testowanie w pamięci może stanowić trudne wyzwanie do pokonania. Ale nadal uważam, że te testy integracji są łatwiejsze do napisania niż w poprzednich latach. [/ EDYCJA]
Jest to zdecydowanie bardziej istotne dzisiaj niż kilka lat temu, kiedy zadano to pytanie, ale może tak być tylko w przypadku Visual Studio i Entity Framework, w których leży moje doświadczenie. Jeśli to możliwe, podłącz własne środowisko.
Myślę, że jest tu wiele dobrych punktów (przenośność, łatwość rozwoju / utrzymania, skupienie się na modelowaniu biznesowym OO itp.), Ale kiedy próbujesz przekonać klienta lub kierownictwo, wszystko sprowadza się do tego, ile pieniędzy zaoszczędzisz, używając ORM .
Dokonaj szacunków dla typowych zadań (lub nawet większych projektów, które mogą się pojawić), a (miejmy nadzieję!) Uzyskasz kilka argumentów za przełączeniem, które trudno zignorować.
.net tiers przy użyciu szablonów Code Smith
http://nettiers.com/default.aspx?AspxAutoDetectCookieSupport=1
Po co kodować coś, co można równie dobrze wygenerować.
Myślę, że jedną wadą jest to, że ORM będzie wymagał aktualizacji w twoim POJO. głównie związane ze schematem, relacją i zapytaniem. więc scenariusz, w którym nie przewiduje się wprowadzania zmian w obiektach modelu, może być spowodowany tym, że jest on współdzielony między innymi na kliencie projektu lub czarno-białym i serwerze. więc w takich przypadkach będziesz musiał podzielić go na dwa poziomy, co będzie wymagało dodatkowych wysiłków.
Jestem programistą Androida i, jak wiesz, aplikacje mobilne zwykle nie są duże, więc ten dodatkowy wysiłek w celu oddzielenia modelu czystego i modelu dotkniętego orm nie wydaje się być w pełni opłacalny.
Rozumiem, że to pytanie ogólne. ale aplikacje mobilne są również objęte ogólnym parasolem.