Hibernate SEBASTIAN LEWICKI BARTOSZ GRABSKI Czym jest Hibernate Hibernate jest to framework do realizacji warstwy dostępu do danych (ang. persistence layer). Zapewnia on przede wszystkim translację danych pomiędzy relacyjną bazą danych a światem obiektowym (ang. O/R mapping). Opiera się na wykorzystaniu opisu struktury danych za pomocą języka XML, dzięki czemu można "rzutować" obiekty, stosowane w obiektowych językach programowania, takich jak Java bezpośrednio na istniejące tabele bazy danych. Dodatkowo Hibernate zwiększa wydajność operacji na bazie danych dzięki buforowaniu i minimalizacji liczby przesyłanych zapytań. Jest to projekt rozwijany jako open source. Głównym inicjatorem i liderem projektu jest Gavin King. Krótka historia Hibernate Hibernate pojawił się w 2001r. Został stworzony przez Gavina Kinga wraz z kolegami z Cirrus Technologies jako alternatywa do EJB2. Pierwotny cel: lepsze możliwości persystencji niż w EJB2 Hibernate został sworzony jako niekomercyjne przedsięwzięcie open-source. Od 2003 r. jest on częścia jboss.org (JBoss prowadzi szkolenia z zakresu Hibernate), jednak wszystko jest wciaż dostępne na licencji GNU Public Licence. Gdzie przyda się Hibernate w projektach, których aplikacje napisane są obiektowo i korzystają z relacyjnych baz danych Co dostarcza Hibernate jest dodatkową warstwą, pomostem pomiędzy logiką aplikacji, a bazą danych Umożliwia zdefiniowanie obiektów przechowujących dane (jako zwykłe klasy Javy), którymi możemy się posługiwać w naszej aplikacji i które są w określony sposób mapowane na bazę danych Architektura Architektura bardziej szczegółowo SessionFactory – cache skompilowanych mapowań dla pojedynczej bazy danych. Stanowi fabrykę dla Session i ConnectionProvider Session – wrapper dla JDBC connection, fabryka dla Transaction ConnectionProvider – fabryka i pool JDBC connection Podprojekty Hibernate Hibernate Core Hibernate Annotations Główna, centralna biblioteka. Odpowiada za mapowanie O/R Rozszerzenie Hibernate Core pozwalające na stosowanie adnotacji (zamiast dokumentów XML) do definiowania mapowań Hibernate EntityManager Połączenie podprojektówHibernate EntityManager oraz Hibernate Annotations pozwala posługiwać się techniką mapowania obiektoworelacyjnego zgodnie ze standardem JPA Podprojekty Hibernate Hibernate Shards Hibernate Validator Ułatwia stosowanie Hibernate Core w przypadku stosowania wielu baz danych. Rozszerza zestaw adnotacji wprowadzonych przez Hibernate Annotations o takie, które umożliwiają dodanie ograniczeń na wartości pól podlegających mapowaniu – constraints Hibernate Search Podprojekty Hibernate Hibernate Tools Obejmuje zestaw narzędzi ułatwiających wykorzystanie Hibernate Core w tworzeniu projektów w języku Java. Nhibernate NHibernate jest implementacją usługi mapowania obiektoworelacyjnego dla platformy .NET. Zalety hibernate Lekkość - nie trzeba używać specjalnych kontenerów, wystarczy dołączyć odpowiednią bibliotekę, można go wykorzystać zarówno do aplikacji webowych, jak i klienckich Brak konieczności generowania ręcznie dodatkowego kodu. W odróżnieniu np. od JDO Hibernate wymaga jedynie obecności plików konfiguracyjnych. Dodatkowe klasy wykorzystywane przez niego są generowane w czasie wykonywania. Zalety hibernate Wsparcie dla kolekcji w Javie Czytelne definicje mappingów Skalowalna architektura Wysoka wydajność www.hibernate.org