Podczas mojej praktyki korzystałem z NHibernate w kilku mniejszych projektach, które głównie kodowałem i projektowałem samodzielnie. Teraz, przed rozpoczęciem większego projektu, pojawiła się dyskusja, jak zaprojektować dostęp do danych i czy używać warstwy ORM. Ponieważ wciąż jestem na stażu i nadal uważam się za początkującego w programowaniu dla przedsiębiorstw, moim zdaniem nie próbowałem naciskać, ponieważ używanie mapowania relacyjnego obiektu do bazy danych może znacznie ułatwić rozwój. Pozostali programiści w zespole programistów są znacznie bardziej doświadczeni niż ja, więc myślę, że zrobię to, co powiedzą. :-)
Jednak nie do końca rozumiem dwa główne powody, dla których nie używam NHibernate lub podobnego projektu:
- Można po prostu zbudować własne obiekty dostępu do danych za pomocą zapytań SQL i skopiować te zapytania z Microsoft SQL Server Management Studio.
- Debugowanie ORM może być trudne.
Tak więc, oczywiście, mógłbym po prostu zbudować warstwę dostępu do danych z dużą ilością SELECT
s itp., Ale tutaj brakuje mi zalet automatycznego łączenia, leniwego ładowania klas proxy i mniejszego wysiłku związanego z konserwacją, jeśli tabela otrzyma nową kolumnę lub kolumna zmieniono nazwę. (Aktualizacja liczne SELECT
, INSERT
i UPDATE
zapytań vs. aktualizowanie config mapowania i ewentualnie refactoring klas biznesowych i DTOs).
Ponadto, używając NHibernate możesz napotkać nieprzewidziane problemy, jeśli nie znasz dobrze struktury. Może to być na przykład zaufanie do pliku Table.hbm.xml, w którym ustawiasz długość łańcucha do automatycznego sprawdzania poprawności. Jednak mogę również wyobrazić sobie podobne błędy w „prostej” warstwie dostępu do danych opartej na zapytaniach SqlConnection.
Wreszcie, czy te argumenty wspomniane powyżej są naprawdę dobrym powodem, aby nie wykorzystywać ORM w nietrywialnej aplikacji korporacyjnej opartej na bazie danych? Czy prawdopodobnie są inne argumenty, które mogliby przegapić?
(Powinienem chyba dodać, że myślę, że jest to pierwsza „duża” aplikacja oparta na .NET / C #, która będzie wymagała pracy zespołowej. Dobre praktyki, które są postrzegane jako całkiem normalne w przypadku przepełnienia stosu, takie jak testy jednostkowe lub ciągła integracja, nie są -istniejący tutaj do teraz.)