niedziela, 25 lipca 2010

Wrażenia po lekturze książki "Hibernate w akcji"

Sięgając po "Hibernate w akcji" (Christian Bauer, Gavin King) nie spodziewałem się,
że lektura podręcznika potrwa ponad miesiąc, przyczyn takiego przebiegu zdarzeń daleko szukać nie trzeba – najpierw zakończenie roku akademickiego oraz sesja, później słoneczny początek wakacji.



Po takim wstępie można śmiało odnieść wrażenie, że staram się znaleźć usprawiedliwienie dla własnego lenistwa – tak jednak nie jest! :)

Długo zastanawiałem się dlaczego "Hibernate w akcji" budził moje mieszane uczucia podczas lektury. Pomimo przekazu wiedzy na temat odwzorowania obiektowo-relacyjnego oraz Hibernate, z czego w moim odczuciu podręcznik wywiązał się przyzwoicie, zabrakło mi w nim akcji - nie tej tytułowej, w książce możemy znaleźć m.in. rozdział
pt. "Tworzenie aplikacji stosujących Hibernate", ale odrobiny dynamizmu, który powinien przykuć uwagę czytelnika nieco skuteczniej oraz wzbudzić w nim chęć do dalszej lektury.

Pomijając już fakt, że książkę czytałem w ślimaczym tempie, chciałbym wspomnieć o pewnej istotnej obserwacji. Podczas lektury podręcznika w mojej głowie zrodziło się wiele pytań i wątpliwości względem przyswajanej wiedzy, odpowiedzi na pytania w większości przypadków pojawiały się podczas dalszej lektury danego rozdziału, aczkolwiek na część z nich albo nie uzyskałem odpowiedzi albo po prostu o nich zapomniałem.

Biorąc pod uwagę powyższy fakt, wysnuć mogę następujący wniosek - sama lektura "Hibernate w akcji" nie sprawi, że posiądziemy umiejętność najefektywniejszego wykorzystania Hibernate w naszych projektach, zdobędziemy natomiast wiedzę, która pozwoli nam
w pełni świadomie podejmować decyzje związane z wykorzystaniem odwzorowania obiektowo-relacyjnego w praktyce.

sobota, 17 lipca 2010

Moje pierwsze kroki z Hibernate oraz PostgreSQL

Zastosowanie odwzorowania obiektowo-relacyjnego w przykładowych projektach planowałem poprzedzić zdobyciem wiedzy teoretycznej
z zakresu tematów ORM oraz Hibernate. Biorąc pod uwagę fakt,
iż do ukończenia lektury podręcznika "Hibernate w akcji" pozostało naprawdę niewiele, postanowiłem wykonać swój pierwszy krok w kierunku praktycznego wykorzystania Hibernate.

Przyznam się, że Jacek Laskowski publikując swój nowy artykuł pt. "Tworzenie samodzielnej aplikacji z Hibernate w NetBeans IDE 6.9" trafił dokładnie w moje potrzeby - dzięki Jacek. Nie spodziewałem się, że przy pomocy NetBeans można tak sprawnie (i szybko!) stworzyć przykładowy projekt z Hibernate.

Pierwsza myśl po poprawnym uruchomieniu aplikacji była następująca: "Chcę zobaczyć zawartość tabeli klient". W przykładzie została wykorzystana domyślna dla NetBeans IDE 6.9 baza danych Apache Derby, zatem przeszedłem do widoku Services, odszukałem tabelę klient oraz niejawnie wykonałem dla niej zapytanie select * from APP.KLIENT poprzez wybranie "View Data..." z menu tabeli.


Kolejna myśl dotyczyła uruchomienia aplikacji w oparciu o bazę danych PostgreSQL. Czynności mające na celu realizację tego zadania opisałem poniżej.

Instalacja serwera bazy danych PostgreSQL nie stanowi jakiegokolwiek problemu, podczas jej trwania użytkownik proszony jest o ustalenie hasła dostępowego do konta postgres pełniącego rolę administratora.

Wszystkie wymagane informacje do stworzenia nowego pliku konfiguracyjnego Hibernate uzyskamy uruchamiając aplikację pgAdmin III. Dodatkowo za jej pomocą jesteśmy w stanie np. utworzyć nową bazę danych oraz zdefiniować nowe role (konta użytkowników). Na potrzeby przykładowej aplikacji możemy wykorzystać istniejącą już bazę danych oraz zdefiniowaną rolę
(dla obu przypadków nazwą jest postgres).

Mając na celu stworzenie nowego dokumentu hibernate.cfg.xml (aktualny kasujemy) posłużymy się kreatorem pliku konfiguracyjnego dla Hibernate w NetBeans (File -> New File : kategoria Hibernate,
typ pliku Hibernate Configuration Wizard).

W trzecim kroku kreatora pt. "Select Data Source" jako Database Connection wybieramy "New Database Connection...". Następnie definiujemy nowe połączenie z bazą danych: wybieramy odpowiedni sterownik oraz podajemy wymagane informacje.




Do utworzonego pliku hibernate.cfg.xml pomiędzy <session-factory>
a </session-factory> dodajemy następujące linijki:

<property name="current_session_context_class">
thread</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<mapping resource="hibernate.hbm.xml"/>
Aplikacja jest gotowa. Uruchamiamy ją kilka razy, następnie
łączymy się z bazą danych za pomocą pgAdmin III, odszukujemy oraz zaznaczamy tabelę klient.


Ctrl + d wyświetli pełną zawartość tabeli.


Jak widzimy informacje przekazane za pomocą przykładowej aplikacji zostały utrwalone w bazie danych PostgreSQL.