Hibernate
![]() Logo programu | |
Autor | Red Hat |
---|---|
Pierwsze wydanie | 23 maja 2001 |
Aktualna wersja stabilna | 6.5.0 (25 kwietnia 2024) [±] |
Język programowania | Java |
Platforma sprzętowa | Wirtualna maszyna Javy |
Rodzaj | Framework |
Licencja | LGPL |
Strona internetowa |
Hibernate – 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 oraz liderem projektu jest Gavin King.
Podprojekty
[edytuj | edytuj kod]W skład projektu Hibernate wchodzą następujące podprojekty:
- Hibernate Core
- Hibernate Annotations
- Hibernate EntityManager
- Hibernate Shards
- Hibernate Validator
- Hibernate Search
- Hibernate Tools
- NHibernate
Hibernate Core
[edytuj | edytuj kod]Stanowi centralną część wszystkich projektów. Pozostałe stanowią albo rozszerzenia (np. Hibernate Annotations) albo translację dla innych języków (NHibernate). Stąd podprojekt Hibernate Core jest utożsamiany z całym projektem Hibernate.
Hibernate Core jest biblioteką umożliwiającą wykonywanie mapowania obiektowo-relacyjnego dla języka Java, w którym mapowania zdefiniowane są w dokumentach XML.
Hibernate Annotations
[edytuj | edytuj kod]Rozszerzenie projektu Hibernate Core pozwalające na stosowanie adnotacji (zamiast dokumentów XML) do definiowania mapowań między obiektami Javy oraz tabelami.
Hibernate EntityManager
[edytuj | edytuj kod]Nakładka na projekt Hibernate Core wprowadzająca EntityManager jako centralną klasę, z poziomu której wykonywana jest komunikacja z bazą danych. Połączenie podprojektów Hibernate EntityManager oraz Hibernate Annotations pozwala posługiwać się techniką mapowania obiektowo-relacyjnego zgodnie ze standardem Java Persistence API.
Hibernate Shards
[edytuj | edytuj kod]Ułatwia stosowanie Hibernate Core w przypadku stosowania wielu baz danych.
Hibernate Validator
[edytuj | edytuj kod]Rozszerza zestaw adnotacji wprowadzonych przez Hibernate Annotations o takie, które umożliwiają dodanie ograniczeń na wartości pól podlegających mapowaniu. Ograniczenia te są podobne jak ograniczenia na pola w bazie danych (ang. constraints). Ograniczenia te są definiowane na poziomie obiektów podlegających zapisywaniu do bazy danych, jednakże dotyczą zarówno ograniczeń nakładanych na pola w bazie danych przy generowaniu schematu bazy danych jak i ograniczeń wprowadzanych na poziomie języka programowania.
Hibernate Search
[edytuj | edytuj kod]Rozszerza możliwości Hibernate Core o usługę pełnotekstowego wyszukiwania (ang. full text search) implementowanego w oparciu o bibliotekę Lucene. Podprojekt ten wykorzystuje również mechanizm adnotacji.
Hibernate Tools
[edytuj | edytuj kod]Obejmuje zestaw narzędzi ułatwiających wykorzystanie Hibernate Core w tworzeniu projektów w języku Java. W szczególności zawiera
- zadania dla narzędzia Ant umożliwiające generowanie schematu bazy danych na podstawie mapowań czy też generowanie klas Java na podstawie mapowań,
- wtyczkę dla Eclipse IDE ułatwiającą pracę z Hibernate.
NHibernate
[edytuj | edytuj kod]NHibernate jest implementacją usługi mapowania obiektowo-relacyjnego dla platformy .NET.
Pozycja na rynku
[edytuj | edytuj kod]Hibernate jest frameworkiem posiadającym najbogatsze API spośród dostępnych rozwiązań. Alternatywą dla tego frameworka stanowi iBATIS oferujący lepsze wsparcie dla obsługi procedur składowanych.
O roli jaką pełni Hibernate świadczy fakt, iż jest on wykorzystywany przez serwer aplikacyjny JBoss. Główny autor Hibernate brał udział w pracach nad opracowaniem standardowego API dla mapowania obiektowo-relacyjnego w języku Java – JPA. Specyficzny dla Hibernate interfejs programistyczny oferuje dużo bogatszy zakres opcji i metod niż standard JPA.
Innym znanym konkurentem Hibernate jest TopLink, narzędzie opracowane przez firmę Oracle udostępniające własne rozszerzenia w stosunku do standardu JPA. Zaletą TopLinka jest jego bardzo dobra integracja z innymi produktami firmy Oracle, takimi jak baza danych Oracle.
Zobacz też
[edytuj | edytuj kod]Linki zewnętrzne
[edytuj | edytuj kod]- Strona projektu (ang.)