Przejdź do treści

DevStyle - Strona Główna
NHibernate – jak zacząć?

NHibernate – jak zacząć?

Maciej Aniserowicz

23 października 2009

Backend

Ostatnio miałem kolejne podejście do NHibernate. Tym razem zdecydowanie udane. W ciągu minionych kilku tygodni trzykrotnie prowadziłem też w “swoim środowisku” rozmowę na temat taki jak w poście – jak zacząć przygodę z NHibernate? Postanowiłem więc, że warto efekt takiej rozmowy opublikować szerszemu gronu.

1. Spróbuj

Stwierdzenie pierwsze: jeżeli kiedyś odbiłeś się od NH, jeżeli odrzucało cię XML-hell, jeżeli nienaturalny wydawał ci się sposób budowania zapytań, jeżeli nie łapałeś “o co chodzi” i dlaczego warto poświęcić trochę czasu na naukę NH – wiele z tego zmieniło się podczas ostatnich miesięcy. Zapomnij o niemiłych wspomnieniach i zacznij od zera, daj sobie i NH drugą szansę – będziesz naprawdę pozytywnie zaskoczony. Provider LINQ i mapowanie w C# to projekty, dzięki którym wg mnie NH dostało wielkiego pozytywnego kopa w kategorii “developer-friendly”.

2. Co wrzucić do referencji?

Na samym początku pojawia się dylemat: no dobra, ale co tak naprawdę muszę ściągnąć, co dodać do referencji żeby zacząć zabawę? Odpowiedzi poniżej:

  • NHibernate w wersji 2.1: NHibernate-2.1.0.GA-bin.zip; plik zawiera instrukcje txt odnośnie tego co trzeba dołączyć do projektu, ale dla leniwych: do referencji trzeba dodać NHibernate.dll oraz jedną z bibliotek umożliwiających “lazy loading”, twórcy NH założyli w domyślnej konfiguracji że użytkownik doda NHibernate.ByteCode.Castle.dll i nie widzę powodu aby robić inaczej
  • provider Linq 2 NHibernate w wersji 1.0: NHibernate.Linq-1.0.0.GA-bin.zip; tu z referencjami nie powinno być problemu gdyż całość to jedna dll :)
  • projekt Fluent NHibernate pozwalający na mapowanie w C#, mega-wypas: Fluent NHibernate 1.0RTM; referencja do FluentNHibernate.dll

3. Skąd czerpać wiedzę?

Często spotykam skargi, że o NHibernate jest materiałów jak na lekarstwo… Szczerze mówiąc to tego lekarstwa można by wyprodukować całkiem sporo. Kilka linków:

  • po pierwsze: oficjalna strona NHibernate to http://nhforge.org/, a nie pierwszy wynik z Google czyli https://www.hibernate.org/343.html; to faktycznie KIEDYŚ było oficjalne gniazdo NH, ale już nie jest
  • dokumentacja na oficjalnej stronie: http://nhforge.org/doc/nh/en/index.html, jest to właściwie cała książka i po prostu KOPALNIA wiedzy o NH; lektura obowiązkowa dla każdego nowicjusza, najlepiej od deski do deski; nie ma tam co prawda wzmianki o fluent-nh czy linq nh, bo projekty te powstały po napisaniu doca, ale i tak zawarte tam informacje po prostu TRZEBA znać
  • blog Ayende Rahien, jednego z głównych rozwijaczy NH (cały blog jest godny polecenia, ale w aktualnie omawianym kontekście: szczególnie wpisy traktujące o NHibernate)
  • cykl wpisów zatytułowanych The NHibernate FAQ – można to określić jako “demonstracja NH w praktyce z TDD”
  • oficjalna strona projektu Fluent NHibernate – tworzenie pierwszych najprostszych mapowań krok po kroku; zakres materiału dość niewielki, ale na początek bardzo przydatny
  • może to zabrzmi banalnie, ale… wujek Google posiada odpowiedzi na naprawdę masę pytań, chociaż często trzeba poszukać dokładnej niż jesteśmy do tego przyzwyczajeni; aha, polecam na koniec pytania doklejać instrukcję “-hibernate” co odfiltruje dyskusje dotyczące dżawowego pierwowzoru NH

UPDATE (26.10.2009): na blogu Ayende pojawiła się informacja, że wraz z Robem Conery rozpoczął publikowanie webcastów o NHibernate. Nic tylko oglądać! LINK

4. Po co?

To pytanie jest niczym zlepek słów: “Co robisz, Szczepanie?”; zawiera pytanie i odpowiedź jednocześnie. Zostawiam was z tym rebusem:).


Z pewnością nie jest to mój ostatni wpis dotyczący NHibernate i Fluent NHibernate. Kilkukrotnie straciłem dobre kilka godzin próbując zrobić coś, co okazywało się banalne. Innymi razy nad ranem docierało do mnie, że podchodzę do problemu z całkowicie złej strony. W jeszcze innych sytuacjach odpowiedzi w Google naprawdę nie było i jedynie zerknięcie w źródła Fluent NH i ich testy jednostkowe okazywało się ostatnią deską ratunku. Tak więc do następnego razu, a póki co – gorąco radzę zaprzyjaźnić się z NHibernate, choćby hobbystyczne, dla własnej satysfakcji.

Zobacz również