Hibernate

Transkrypt

Hibernate
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Hibernate
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Technologie Biznesu Elektronicznego
12 maja 2009
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
1 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
1
Informacje ogólne
2
Architektura projektu
3
Hibernate Core
4
Języki zapytań
5
Java Persistence API
6
Inne składniki pakietu
7
Zakończenie
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
2 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Idea powstania
Składniki projektu
Własności projektu
Informacje ogólne
Problem:
• Oprogramowanie wymaga składowania danych
• Dostęp do danych musi być szybki i łatwy
• Większość istniejących baz jest relacyjna zaś oprogramowanie
jest zorientowane obiektowo
Rozwiązanie:
• Warstwa pośrednia odwzorowująca dane obiektowe
występujące w oprogramowaniu na dane relacyjne
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
3 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Idea powstania
Składniki projektu
Własności projektu
Informacje ogólne [1]
• Data powstania: 2001 rok
• Autor i lider: Gavin King
• Najnowsza wersja: 3.3.1
• Licencja: Open Source
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
4 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Idea powstania
Składniki projektu
Własności projektu
Składniki projektu [1]
• Hibernate Core
• Hibernate Annotations
• Hibernate EntityManager
• Hibernate Shards
• Hibernate Validator
• Hibernate Search
• Hibernate Tools
• NHibernate
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
5 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Idea powstania
Składniki projektu
Własności projektu
Własności projektu [1]
• Naturalny sposób programowania
• Wiele strategii mapowania i zależności pomiędzy obiektami
• Wysoka skalowalność
• Wsparcie konwersacji
• Wiele sposobów dostępu do danych
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
6 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Idea powstania
Składniki projektu
Własności projektu
Własności projektu (2) [1]
• Sprawdzenie poprawności wprowadzonych danych
• Wydajne wyszukiwanie obiektów
• EJB3.0
• Zarówno dla Javy jak i .NET
• Duża integracja ze środowiskami programistycznymi
• Rozprowadzany na Open Source
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
7 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Hibernate w prostej aplikacji
Hibernate w zaawansowanej aplikacji
Stany obiektów
Hibernate w prostej aplikacji [3]
Rysunek przedstawia podstawowy sposób zastosowania Hibernate’a.
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
8 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Hibernate w prostej aplikacji
Hibernate w zaawansowanej aplikacji
Stany obiektów
Hibernate w zaawansowanej aplikacji [3]
Rysunek przedstawia zaawansowany sposób zastosowania
Hibernate’a. Oprogramowanie budowane jest w 4 warstwach.
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
9 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Hibernate w prostej aplikacji
Hibernate w zaawansowanej aplikacji
Stany obiektów
Stany obiektów [3]
• transient - instancja nie jest jeszcze utrwalona w żadnym
kontekscie (nie posiada identyfikatora primary key)
• persistent - instancja została przyporządkowana do kontekstu
utrwalającego. Posiada identyfikator (primary key),
prawdopodbnie odpowiada wierszowi w bazie. Hibernate
gwarantuje, że jeżeli w bazie znajduje się ten obiekt to posiada
on wartości takie same jak w środowisku.
• detached - instancja została już utrwalona, kontekst został
zamknięty. Posiada identyfikator i prawdopodbnie odpowiada
wierszowi w tabeli. Hibernate nie gwarantuje, że dane w
obiekcie Javowym są identyczne z tymi w bazie danych.
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
10 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
ORM
Transakcje i mechanizmy blokowania
Hibernate Core [3]
• Zwalnia programistę z 95% zadań związanych z utrwalaniem
obiektów w relacyjnej bazie danych - mapowania zawarte w
dokumentach XML
• Generuje kod SQL zwalniając z ręcznego operowania obiektami
JDBC
• Umożliwia przenoszenie aplikacji pomiędzy wszystkimi bazami
SQL
• Możliwość zaadoptowania w każdej fazie życia oprogramowania
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
11 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
ORM
Transakcje i mechanizmy blokowania
ORM [3]
Przykładowa implementacja klasy w Javie
public class Event {
private Long id;
private String title;
private Date date;
public Event() {}
// implementacja setterów i getterów
}
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
12 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
ORM
Transakcje i mechanizmy blokowania
ORM [3]
Przykładowy deskryptor mapowania XML
<?xml v e r s i o n ="1.0"? >
<!DOCTYPE h i b e r n a t e −mapping PUBLIC
"−// H i b e r n a t e / H i b e r n a t e Mapping DTD 3 . 0 / /EN"
" h t t p : / / h i b e r n a t e . s o u r c e f o r g e . n e t / h i b e r n a t e −mapping − 3 . 0 . d t d">
<h i b e r n a t e −mapping>
< c l a s s name=" e v e n t s . E v e n t " t a b l e ="EVENTS">
<i d name=" i d " column="EVENTID">
<g e n e r a t o r c l a s s =" n a t i v e "/>
</i d >
<p r o p e r t y name=" d a t e " t y p e ="t i m e s t a m p "
column="EVENTDATE"/>
<p r o p e r t y name=" t i t l e "/>
</ c l a s s >
</ h i b e r n a t e −mapping>
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
13 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
ORM
Transakcje i mechanizmy blokowania
Transakcje i mechanizmy blokowania [3]
Mechanizm blokowania pesymistycznego
• Nakładnie blokady na wiersz na cały czas manipulowania
obiektem
• Gwarantuje, że zmiany w bazie będą przeprowadzane
bezpiecznie
• Rozwiązanie wysoce nieskalowalne
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
14 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
ORM
Transakcje i mechanizmy blokowania
Transakcje i mechanizmy blokowania [3]
Mechanizm blokowania optymistycznego
• Zakłada rzadkie występowanie kolicji w manipulowanych
danych
• Zamiast pilnowania by kolizje nie wystąpiły pozwala je
rozwiązywać, gdy się zdarzą
• Blokady zakładane jedynie na moment aktualizacji
• Powinnien być użyty dla wszystkich encji, które będą używane
współbieżnie
• Brak użycia mechanizmu optymistycznego blokowania przenosi
odpowiedzialność zarządzania spójnością danych na warstwę
aplikacji
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
15 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
ORM
Transakcje i mechanizmy blokowania
Transakcje i mechanizmy blokowania [3]
Mechanizm blokowania optymistycznego w Hibernate
• Dla pobieranego dokumentu tworzona jest wersja
• Przy aktualizacji Hibernate sprawdza wartość wersji w systemie
oraz dostępnej wersji w bazie.
• Niezgodność wersji skutkuje rzuceniem wyjątku
OptimisticLockExeption
• Możliwość jawnego podania adnotacji @Version dla liczby
stałoprzecinkowej bądź znacznika czasu
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
16 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
HQL
EJB QL / JPQL
QBC
SQL
Języki zapytań
Hibernate udostępnia kilka języków dostępu do danych:
• Hibernate Query Language (HQL)
• EJB Query Language (EJB QL / JPQL)
• Query By Criteria (QBC)
• Native SQL
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
17 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
HQL
EJB QL / JPQL
QBC
SQL
Hibernate Query Language [3]
Własności
• Obiektowy
• Składnia zbliżona do SQL
• Złączenia, podzapytania i grupowanie
• Funkcje agregujące
• Opcjonalność klauzuli select
• Największe możliwości z języków udostępnianych przez
Hibernate
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
18 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
HQL
EJB QL / JPQL
QBC
SQL
Hibernate Query Language [3]
Przykładowe zapytanie HQL
select cat.weight + sum(kitten.weight)
from Cat cat
join cat.kittens kitten
group by cat.id, cat.weight
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
19 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
HQL
EJB QL / JPQL
QBC
SQL
Enterprise JavaBeans Query Language [4]
Własności
• Składnik standardu EJB
• W EJB 3.0 nazwa została zmieniona na JPQL
(Java Persistence Query Language)
• inspirowany językiem HQL (posiada to samo API)
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
20 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
HQL
EJB QL / JPQL
QBC
SQL
EJB Query Language [4]
Przykładowe zapytanie
select cust
from Product prod,
Store store
inner join store.customers cust
where prod.name = ’widget’
and store.location.name in ( ’Melbourne’, ’Sydney’ )
and prod = all elements(cust.currentOrder.lineItems)
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
21 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
HQL
EJB QL / JPQL
QBC
SQL
Query By Criteria [3]
Własności
• mniej popularny niż HQL
• mocno ograniczone możliwości
• zapytanie dotyczy tylko jednej klasy trwałej
• umożliwia sortowanie
• pozwala na natywne kryteria SQL
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
22 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
HQL
EJB QL / JPQL
QBC
SQL
Query By Criteria [3]
QBC polega na zawężaniu kolekcji obiektów poprzez określanie
kryteriów wyboru.
Przykładowe kryteria
• Restrictions.isNull
• Restrictions.eq
• Restrictions.like
• Restrictions.between
• Restrictions.sqlRestriction
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
23 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
HQL
EJB QL / JPQL
QBC
SQL
Query By Criteria [3]
Przykładowe zapytanie
L i s t c a t s = s e s s . c r e a t e C r i t e r i a ( Cat . c l a s s )
. add ( R e s t r i c t i o n s . l i k e ( " name " , "F%")
. a d d O r d e r ( O r d e r . a s c ( " name " ) )
. a d d O r d e r ( O r d e r . d e s c ( " age " ) )
. list ();
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
24 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
HQL
EJB QL / JPQL
QBC
SQL
Native SQL [3]
Własności
• Pozwala wykorzystać mechanizmy specyficzne dla danego
systemu zarządzania bazą danych
• Ułatwia przenoszenie aplikacji z JDBC do Hibernate
• Uzależnia implementację od konkretnego SZBD
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
25 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
HQL
EJB QL / JPQL
QBC
SQL
Native SQL
Przykładowe zapytanie
s e s s i o n . createSQLQuery (
"SELECT ID ,
NAME,
BIRTHDATE
FROM CATS " ) . l i s t ( ) ;
s e s s . createSQLQuery (
"SELECT ID ,
NAME,
BIRTHDATE
FROM CATS " ) . a d d E n t i t y ( Cat . c l a s s ) ;
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
26 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Implementacja JPA w Hibernate
Hibernate Annotations
Hibernate EntityManager
Java Persistence API
Framework pozwalający na ustandaryzowany sposób zarządzania
danymi w aplikacjach Java SE i EE.
Własności JPA
• Oficjalny standard ORM
• Składnik standardu Enterprise JavaBeans 3.0
• W jego tworzenie zaangażowany był m.in. twórca Hibernate -
Gavin King
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
27 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Implementacja JPA w Hibernate
Hibernate Annotations
Hibernate EntityManager
Implementacja JPA w Hibernate
• Hibernate implementuje JPA w postaci warstwy opakowującej
Hibernate Core
• Implementacja podzielona jest na dwa niezależne pakiety:
• Hibernate Annotations
• Hibernate EntityManager
• Pakiety są od siebie niezależne
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
28 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Implementacja JPA w Hibernate
Hibernate Annotations
Hibernate EntityManager
Hibernate Annotations [2]
Własności
• Implementuje wszystkie adnotacje EJB 3.0 / JPA, włącznie z
opcjonalnymi
• adnotacjami można zastąpić większość składowych mapowania
XML
• Configuration by exception
• Adnotowanie atrybutów lub ich akcesorów
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
29 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Implementacja JPA w Hibernate
Hibernate Annotations
Hibernate EntityManager
Hibernate Annotations [2]
Możliwości
• Mapowanie prostych i złożonych atrybutów
• Definiowanie związków między encjami
• Określanie strategii dziedziczenia
• Mapowanie identyfikatorów encji
• Tuning wydajności
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
30 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Implementacja JPA w Hibernate
Hibernate Annotations
Hibernate EntityManager
Hibernate Annotations [2]
Przykładowe adnotacje
• @Entity
• @Id
• @Basic
• @Transient
• @Temporal
• @Lob
• Związki: @ManyToMany , @OneToMany , @OneToOne
• @Embedded
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
31 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Implementacja JPA w Hibernate
Hibernate Annotations
Hibernate EntityManager
Hibernate EntityManager [4]
Własności
• Implementuje interfejsy programistyczne oferowane przez JPA
• Opakowuje metody z pakietu HibernateCore
• Razem z HibernateAnnotations tworzy kompletną
implementację standardu JPA
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
32 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Implementacja JPA w Hibernate
Hibernate Annotations
Hibernate EntityManager
Hibernate EntityManager [4]
Klasa EntityManagerFactory
EntityManagerFactory
• Opakowuje SessionFactory
• Zawiera dane połączenia z konkretnym źródłem danych
• Zapewnia tworzenie instancji EntityManager ’a
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
33 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Implementacja JPA w Hibernate
Hibernate Annotations
Hibernate EntityManager
Hibernate EntityManager [4]
Klasa EntityManager
EntityManager
• Opakowuje Session
• Zawiera konkretne połączenie ze źródłem danych
• Umożliwia wykonywanie zapytań EJB-QL
• Pozwala na utrwalanie obiektów
• Zarządza transakcjami
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
34 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Cache
Hibernate Validator
Hibernate Tools
NHibernate
Cache w Hibernate [3]
Hibernate posiada 2-poziomowy cache:
• I poziom - Session (zakres transakcji)
• II poziom - SessionFactory (zakres całej aplikacji)
Wybrani dostawcy cache’u II poziomu
• EHCache
• SwarmCache
• JBoss Cache
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
35 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Cache
Hibernate Validator
Hibernate Tools
NHibernate
Hibernate Validator [1]
Pakiet umożliwiający walidację atrybutów klas trwałych.
HibernateValidator działa na dwóch poziomach:
• sprawdza obiekty znajdujące się w pamieci
• dodaje ograniczenia do schematu bazy danych
Przykładowe ograniczenia
• @NotNull
• @Max(value=)
• @Past
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
36 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Cache
Hibernate Validator
Hibernate Tools
NHibernate
Hibernate Validator [1]
Dokonywanie walidacji
W warstwie aplikacji
JSF + JBoss Seam
<s:validate>
W warstwie biznesowej
ClassValidator personValidator
= new C l a s s V a l i d a t o r ( P e r s o n . c l a s s ) ;
InvalidValue [ ] validationMessages
= personValidator . g e t I n v a l i d V a l u e s ( person ) ;
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
37 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Cache
Hibernate Validator
Hibernate Tools
NHibernate
Hibernate Tools [1]
Opis
Zbiór narzędzi dla Hibernate’a i powiązanych z nim projektów,
które ułatwiają pracę ze środowiskiem.
• Mapping Editor - Ułatwia pracę z plikami XML dotyczącymi
mapowania obiektów.
• Console - Pozwala zadawać interaktywnie zapytania w języku
HQL. Dostarcza wizualizacje powiązań klas.
• Reverse Engineering - Najbardziej zaawansowane narzędzie z
projektu. Pozwala wygenerować model klas, pliki mapowania,
adnotacje, dokumentacje HTML z istniejącej bazy.
• Wizards - Ułatwiają tworzenie konfiguracji Hibernate’a
• Ant task - Zajmuje się tworzeniem zadań dla Anta.
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
38 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Cache
Hibernate Validator
Hibernate Tools
NHibernate
NHibernate [1]
Opis
Wersja Hibernate’a dla środowiska Microsoft .NET
• Przeportowany Hibernate 2.1 for Java
• Wymagany Framework .NET w wersji 1.1 lub 2.0
• Rozprowadzany na licencji Open Source
• Silna integracja z MS Visual Studio
• Wartość podstawowej części projektu to około 182 osobolata
praca, czyli ok 10 mln dolarów
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
39 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Podsumowanie
Bibliografia
Przykłady
Podsumowanie
• Hibernate jest bardzo dojrzałym rozwiązaniem ORM
• Projekt zawiera wiele modułów ułatwiających pracę oraz
wspomagających proces tworzenia oprogramowania
• Implementuje standard JPA
• Licencja LGPL sprawia, że możemy go użyć w dowolnym
projekcie, ZA DARMO
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
40 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Podsumowanie
Bibliografia
Przykłady
Bibliografia
Hibernate - relational persistence for idiomatic java, Maj 2009.
http://www.hibernate.org/.
Hibernate annotations reference documentation, Maj 2009.
http://docs.jboss.org/hibernate/stable/annotations/reference/en/.
Hibernate core reference documentation, Maj 2009.
http://docs.jboss.org/hibernate/stable/core/reference/en/.
Hibernate entitymanager reference documentation, Maj 2009.
http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/.
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
41 / 42
Agenda
Informacje ogólne
Architektura projektu
Hibernate Core
Języki zapytań
Java Persistence API
Inne składniki pakietu
Zakończenie
Podsumowanie
Bibliografia
Przykłady
Przykłady
Adrian Gawor, Adam Klekotka, Piotr Kubisz
Hibernate
42 / 42

Podobne dokumenty