Hibernate. Adrian Gawor, Adam Klekotka, Piotr Kubisz. Technologie Biznesu Elektronicznego. 12 maja 2009

Podobne dokumenty
Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

NHibernate Hibernate dla platformy.net. Hibernate posiada także dużą społeczność, zatem nietrudno uzyskać jakieś wsparcie w przypadku problemów.

Karolina Rusin, Paweł Biczysko, Michał Olejnik. 11 maja 2009

Programowanie wielowarstwowe i komponentowe

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Hibernate. Od Nowicjusza do Profesjonalisty. Dave Minter Jeff Linwood

Podstawy frameworka Spring

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Podejście obiektowe do relacyjnych baz danych Hibernate.

EJB 3.0 (Enterprise JavaBeans 3.0)

NHibernate. Narzędzie mapowania obiektowo - relacyjnego

Załącznik Nr 5 do Zarz. Nr 33/11/12

Java Persistence API - zagadnienia zaawansowane

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Programowanie obiektowe

ORM w Javie. Adam Michalik 2007

JAVA PERSISTENCE API CZĘŚĆ 2 ASPEKTY ZAAWANSOWANE. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Spis treści. Przedmowa

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Analiza porównawcza technologii odwzorowania obiektowo-relacyjnego dla aplikacji Java

Metody dostępu do danych

Generowanie raportów

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013

Podstawowe informacje o technologii Java Persistence API - przykład

Gdzie jest moja tabela?

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Programowanie w języku Java WYKŁAD

EJB 2.x oraz zmiany w standardzie dla EJB 3.0. Michał Stanek

Podstawowe wykorzystanie Hibernate

JPA Java Persistance API

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

1 Wprowadzenie do J2EE

Projekt INP Instrukcja 2. Autor Dr inż. Zofia Kruczkiewicz

JBoss: MetaMatrix, Mobicents, Seam, Rools, ESB

22 października Akademia Górniczo-Hutnicza, Automatyka i Robotyka. Porównanie LINQ i NHibernate. Mateusz Mazur Ale o co chodzi?

Ekspert MS SQL Server Oferta nr 00/08

Projektowanie aplikacji z bazami danych

Metody dostępu do danych

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Dostęp do baz danych w aplikacjach Java EE

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Nowoczesne aplikacje internetowe oparte na Spring Framework, JSF, JPA i AJAX

Zasady generowania kluczy głównych Język Java Persistence Podstawowa architektura wielowarstwowych aplikacji w oparciu o wzorce oprogramowania

Aplikacje Internetowe, Servlety, JSP i JDBC

Tomasz Dobek.

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

Programowanie obiektowe

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych

Nowy powiew od Słońca: EJB 3.0. Copyright Piotr Kochański & Erudis,

Enterprise JavaBeans 3.0

AUREA BPM Oracle. TECNA Sp. z o.o. Strona 1 z 7

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

EJB 3.0 & JBoss Seam. 25 kwietnia 2007 Jacek Gerbszt 1

Programowanie obiektowe

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Hibernate mapowanie baz danych

MAPOWANIE OBIEKTOWO-RELACYJNE (ORM) CZY TYLKO DOBRA IDEA?

Nowoczesne aplikacje internetowe oparte na Seam, JSF, EJB3, JPA, AJAX

JBoss Application Server

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

JAVA PERSISTENCE API. Wykorzystano fragmenty wykładów M. Piotrowskiego i M. Wójcika. Waldemar Korłub

Oracle11g: Wprowadzenie do SQL

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

ODWZOROWANIE OBIEKTOWO-RELACYJNE

Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie. Zofia Kruczkiewicz

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

Microsoft SQL Server Podstawy T-SQL

Przetwarzanie danych z wykorzystaniem technologii NoSQL na przykładzie serwisu Serp24

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Wprowadzenie do Doctrine ORM

BalticBottomBase. Instytut Morski w Gdańsku Gdańsk,

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Programowanie w Ruby

Programowanie MorphX Ax

Wykład 1 Inżynieria Oprogramowania

Zaawansowane Techniki Bazodanowe

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski. Bazy danych ITA-101. Wersja 1

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Kurs programowania aplikacji bazodanowych

Db4o obiektowa baza danych wersja.net

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Wzorce logiki dziedziny

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016

SZKOLENIE TWORZENIE SYSTEMÓW

Technologia informacyjna

Enterprise JavaBeans

Web Tools Platform. Adam Kruszewski

Kurs programowania aplikacji bazodanowych

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Wzorce dystrybucji i wspólbieżności autonomicznej

Relacje. 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje.

Paweł Rajba

Transkrypt:

Agenda Hibernate Adrian Gawor, Adam Klekotka, Piotr Kubisz Technologie Biznesu Elektronicznego 12 maja 2009 Adrian Gawor, Adam Klekotka, Piotr Kubisz Hibernate 1 / 42

Agenda 1 2 3 4 5 6 7 Adrian Gawor, Adam Klekotka, Piotr Kubisz Hibernate 2 / 42

Agenda Idea powstania Składniki projektu Własności projektu 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

[1] Agenda Idea powstania Składniki projektu Własności projektu 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

Składniki projektu [1] Agenda Idea powstania Składniki projektu Własności projektu Hibernate Annotations Hibernate EntityManager Hibernate Shards Hibernate Validator Hibernate Search Hibernate Tools NHibernate Adrian Gawor, Adam Klekotka, Piotr Kubisz Hibernate 5 / 42

Własności projektu [1] Agenda Idea powstania Składniki projektu Własności projektu 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 Własności projektu (2) [1] Idea powstania Składniki projektu Własności projektu 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 Hibernate w prostej aplikacji [3] Hibernate w prostej aplikacji Hibernate w zaawansowanej aplikacji Stany obiektów Rysunek przedstawia podstawowy sposób zastosowania Hibernate a. Adrian Gawor, Adam Klekotka, Piotr Kubisz Hibernate 8 / 42

Agenda Hibernate w zaawansowanej aplikacji [3] Hibernate w prostej aplikacji Hibernate w zaawansowanej aplikacji Stany obiektów Rysunek przedstawia zaawansowany sposób zastosowania Hibernate a. Oprogramowanie budowane jest w 4 warstwach. Adrian Gawor, Adam Klekotka, Piotr Kubisz Hibernate 9 / 42

Stany obiektów [3] Agenda Hibernate w prostej aplikacji Hibernate w zaawansowanej aplikacji Stany obiektów 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

[3] Agenda ORM Transakcje i mechanizmy blokowania 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

ORM [3] Agenda ORM Transakcje i mechanizmy blokowania 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

ORM [3] Agenda ORM Transakcje i mechanizmy blokowania 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. dtd"> <h i b e r n a t e mapping> < c l a s s name="e v e n t s. Event " 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 "/> </id > <p r o p e r t y name="d a t e " t y p e="timestamp " 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 Transakcje i mechanizmy blokowania [3] Mechanizm blokowania pesymistycznego ORM Transakcje i mechanizmy blokowania 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 Transakcje i mechanizmy blokowania [3] Mechanizm blokowania optymistycznego ORM Transakcje i mechanizmy blokowania 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 Transakcje i mechanizmy blokowania [3] Mechanizm blokowania optymistycznego w Hibernate ORM Transakcje i mechanizmy blokowania 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 HQL EJB QL / JPQL QBC SQL 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 Hibernate Query Language [3] HQL EJB QL / JPQL QBC SQL 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 Hibernate Query Language [3] HQL EJB QL / JPQL QBC SQL 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 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 EJB Query Language [4] HQL EJB QL / JPQL QBC SQL 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

Query By Criteria [3] Agenda HQL EJB QL / JPQL QBC SQL 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

Query By Criteria [3] Agenda HQL EJB QL / JPQL QBC SQL 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

Query By Criteria [3] Agenda HQL EJB QL / JPQL QBC SQL 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%"). addorder ( Order. asc (" name ") ). addorder ( Order. desc (" age ") ). l i s t ( ) ; Adrian Gawor, Adam Klekotka, Piotr Kubisz Hibernate 24 / 42

Native SQL [3] Agenda HQL EJB QL / JPQL QBC SQL 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

Native SQL Agenda HQL EJB QL / JPQL QBC 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 Implementacja JPA w Hibernate Hibernate Annotations Hibernate EntityManager 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 Implementacja JPA w Hibernate Implementacja JPA w Hibernate Hibernate Annotations Hibernate EntityManager Hibernate implementuje JPA w postaci warstwy opakowującej 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 Hibernate Annotations [2] Własności Implementacja JPA w Hibernate Hibernate Annotations Hibernate EntityManager 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 Hibernate Annotations [2] Możliwości Implementacja JPA w Hibernate Hibernate Annotations Hibernate EntityManager 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 Hibernate Annotations [2] Przykładowe adnotacje Implementacja JPA w Hibernate Hibernate Annotations Hibernate EntityManager @Entity @Id @Basic @Transient @Temporal @Lob Związki: @ManyToMany, @OneToMany, @OneToOne @Embedded Adrian Gawor, Adam Klekotka, Piotr Kubisz Hibernate 31 / 42

Agenda Hibernate EntityManager [4] Własności Implementacja JPA w Hibernate Hibernate Annotations Hibernate EntityManager 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 Hibernate EntityManager [4] Klasa EntityManagerFactory Implementacja JPA w Hibernate Hibernate Annotations Hibernate EntityManager 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 Hibernate EntityManager [4] Klasa EntityManager Implementacja JPA w Hibernate Hibernate Annotations Hibernate 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

Cache w Hibernate [3] Agenda Cache Hibernate Validator Hibernate Tools NHibernate 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 Hibernate Validator [1] Cache Hibernate Validator Hibernate Tools NHibernate 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 Hibernate Validator [1] Dokonywanie walidacji Cache Hibernate Validator Hibernate Tools NHibernate W warstwie aplikacji JSF + JBoss Seam <s:validate> W warstwie biznesowej C l a s s V a l i d a t o r p e r s o n V a l i d a t o r = new C l a s s V a l i d a t o r ( Person. c l a s s ) ; I n v a l i d V a l u e [ ] v a l i d a t i o n M e s s a g e s = p e r s o n V a l i d a t o r. g e t I n v a l i d V a l u e s ( p e r s o n ) ; Adrian Gawor, Adam Klekotka, Piotr Kubisz Hibernate 37 / 42

Hibernate Tools [1] Agenda Cache Hibernate Validator Hibernate Tools NHibernate 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

NHibernate [1] Agenda Cache Hibernate Validator Hibernate Tools NHibernate 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

Podsumowanie Agenda Podsumowanie Bibliografia Przykłady 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

Bibliografia Agenda Podsumowanie Bibliografia Przykłady 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

Przykłady Agenda Podsumowanie Bibliografia Przykłady Adrian Gawor, Adam Klekotka, Piotr Kubisz Hibernate 42 / 42