Data powstania: 2001 rok Autor i lider: Gavin King Najnowsza wersja: 3.3.1 Licencja: Open Source.

Slides:



Advertisements
Podobne prezentacje
20041 Projektowanie dynamicznych witryn internetowych Paweł Górczyński ASP 3.0.
Advertisements

Hibernate zapytania.
Rafał Hryniów Tomasz Pieciukiewicz
Object-Relational Mapper for PHP
Odwzorowanie obiektowo-relacyjne
Marcin Pamuła Mateusz Stefek
Visual Studio Codename „Orcas”, LINQ
Model – View - Controler
Dokumentowanie wymagań w języku XML
Hibernate Klasy trwałe
WekaSQL Język i aplikacja przetwarzania oraz eksploracji danych.
WekaSQL Język i aplikacja przetwarzania oraz eksploracji danych.
Wykład 8 Wojciech Pieprzyca
Enteprise Java Beans Emil Wcisło.
Wzorce projektowe w J2EE
Systemy zarządzania treścią CMS
Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe.
Odwzorowania relacyjno-obiektowe Hibernate zapytania.
Hibernate relacje.
Hibernate uzupełnienie
Multimedialne bazy danych
System katalogowania. Opis i architektura.
SZPIF – Harmonogram, Opis narzędzi, Schemat bazy danych
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
Message-Driven Bean.
Transakcje zarządzane kontenerem
ASP BAZY. 2.2 S. Wolek Wst. do Inf. Połączenie z bazą danych przez ADO (ActiveX Data Object) do: - źródła ODBC - bazy z podanie nazwy sterownika ODBC.
Autor: Kamil Szafranek
SQL - Structured Query Language
Java – coś na temat Klas Piotr Rosik
Inicjalizacja i sprzątanie
JAVA.
Aplikacje bazodanowe ADO.NET PHP i MySQL
Programowanie obiektowe 2013/2014
Systemy zarządzania treścią Wykład 5
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Zpiratował Rafał Kaczyński. Jest to technologia pozwalająca mapować dane obiektowe na odpowiadające im struktury w bazach danych. Hibernate pozwala na.
Projektowanie stron WWW
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5 Programowanie komponentowe 1.
Marcin nowak, Wojciech baszczyk
Model obiektowy bazy danych
Diagram klas Kluczowymi elementami są: klasy (class)
Oprogramowanie komponentowe w środowisku Microsoft Katarzyna Kuźniar 4 FDA, C1.
Autor: Damian Urbańczyk
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Piotr Czapiewski Wydział Informatyki ZUT Wykład 2.
Podstawy języka skryptów
Komendy SQL do pracy z danymi
Hibernate Podstawy.
XML w bazach danych.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
.NET i Bazy Danych Projekt: Wadim Grasza.
Konfiguracja HIBERnate, postgresQL + przykładowa aplikacja
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Programowanie Obiektowe – Wykład 6
T. 18. E Proces DGA - Działania (operatorka).
(według:
Programowanie Obiektowe – Wykład 2
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5
Aplikacje i usługi internetowe
PGO - Projektowanie i implementacja pierwszych klas
PGO Dziedziczenie Michail Mokkas.
Programowanie w Javie 1 Dr Robert Kowalczyk
PGO Porównywanie obiektów
Zapis prezentacji:

Data powstania: 2001 rok Autor i lider: Gavin King Najnowsza wersja: Licencja: Open Source

Hibernate Hibernate jest obiektowym narzędziem dostępu do bazy danych. Hibernate pozwala tworzyć klasy odpowiadające tabelkom w bazie danych. Umożliwia modelowanie relacji, dziedziczenia, polimorfizmu, kompozycji i kolekcji. W Hibernate mamy możliwość wykonywania SQL- owych zapytań do bazy danych. Udostępnia też własny język zapytań (HQL), który dorównuje możliwościami SQL-owi, a przewyższa go pod względem przejrzystości.

Hibernate to technologia O/RM dla Javy – Z uwzględnieniem asocjacji, kompozycji, dziedziczenia, polimorfizmu, kolekcji Funkcjonalność Hibernate: – Odwzorowanie klas Javy na tabele w bazie danych I typów danych Javy na typy danych SQL – Dostarczanie mechanizmów wykonywania zapytań do bazy danych Pozwala uniknąć ręcznego zarządzania danymi na poziomie SQL i JDBC Wg dokumentacji celem Hibernate jest zwolnienie projektanta aplikacji z konieczności ręcznego kodowania 95% zadań związanych z zapewnieniem trwałości danych

Hibernate jest najbardziej odpowiedni dla aplikacji Java pracujących w warstwie pośredniej, Rozpowszechniany na licencji FSF Lesser Gnu Public License Najpopularniejsza obecnie implementacja odwzorowania obiektowo - relacyjnego dla Javy – Dużo materiałów i pomocy w Internecie – Udział twórców Hibernate w pracach nad specyfikacją EJB 3.0

Część konfiguracyjna Część konfiguracyjna, a więc całość plików do konfiguracji zawarta jest w jednym pliku, najczęściej o nazwie hibernate.cfg.xml, Wiele klas mapowanych Wiele klas mapowanych, tabele w bazie danych, np. Person.java, Contakt.java. Najczęściej takie klasy posiadają dużą ilość atrybutów, a dla każdego z nich przyporządkowane są metody: set ( ) oraz Get ( )), XML – owe mappingi XML – owe mappingi powyższych klas - to właśnie w nich można znaleźć opisy, w jaki sposób te klasy mogą ulec procesowi mapowania na poszczególne tabele w bazie danych. Jedna lub więcej klas Jedna lub więcej klas, które odwołują się do bazy danych, oraz tych, które wykorzystują z interfejsów takich jak: Transaction, Query, SessionFactory, Configuration, Session.

Interfejs Session Interfejs Session – jest głównym interfejsem każdej aplikacji Hibernate. Projekty Session można uznać za lekkie, ponieważ ich koszt utworzenia, a także zniszczenia nie jest wielki. A więc jest to szczególnie ważny aspekt, ponieważ każda aplikacja nieustannie usuwa, a następnie tworzy coraz to nowsze sesje. Znaczenie sesji Hibernate można nazwać jako zjawisko między połączeniem i transakcją. Interfejs SessionFactory Interfejs SessionFactory – aplikacja zajmuje się pobieraniem egzemplarzy Session z SessionFactory. Interfejs SessionFactory nie można określić jako lekki, ponieważ został utworzony z myślą o współpracy przez większą ilość aplikacji. Często zdarza się tak, że na całą aplikację pojawia się tylko jeden obiekt SessionFactory, który powstaje w czasie procesu inicjalizacji. W przypadku, kiedy aplikacja wykorzystuje kilka baz danych wraz z Hibernate, to wtedy jest potrzebny osobny obiekt SessionFactory dla poszczególnej bazy danych.

Interfejs Transaction Interfejs Transaction – stara się ukryć szczegóły implementacji konkretnych mechanizmów transakcyjnych: JDBC, klasy UserTransaction z JTA lub nawet transakcji COBRA. Ma to na celu ułatwienie przenośności aplikacji Hibernate pomiędzy różnorodnymi środowiskami wykonywania i kontenerami. Aplikacje Hibernate nie są zmuszone korzystać z interfejsu Transaction, jeżeli chcą zarządzać transakcjami we własnym zakresie. Interfejs Query Interfejs Query – ma na celu umożliwić proces wysyłania zapytań do bazy danych oraz sterowanie procesem ich realizowania. Takie zapytania należy pisać w języku WQL albo językiem odpowiednim dla poszczególnej bazy danych dialekcie SQL. Egzemplarz Query jest odpowiedzialny za zmniejszenie liczby zwracanych wyników i o wykonanie zapytania. Interfejs Configuration Interfejs Configuration – służy on do konfiguracji i uruchomienia Hibernate. A więc aplikacja korzysta z egzemplarza Configuration do ustalenia położenia dokumentów odwzorowań i właściwości charakterystycznych dla Hibernate.

Dowolna klasa może reprezentować encje Wygodne i intuicyjne mapowanie z wykorzystaniem plików XML lub adnotacji (od Hibernate 3.0) Automatyczna optymalizacja = wydajność Mniej kodu = mniej błędów Proste zasady działania Możliwość korzystania z możliwości SQL bez wychodzenia poza granicę języka Java Możliwość stworzenia dużej bazy bez większego wkładu pracy Dostepność narzędzi open source Popularność

Wsparcie techniczne oraz dokumentacja Hibernate, które można znaleźć w Internecie można określić jako niewystarczająca, Posiada wiele usterek, Dla złożonych danych, proces mapowania danych z obiektu do tabeli i odwrotnie, zmniejsza wydajność, powodując tym samym wydłużenie czasu konwersji, Hibernate nie pozwala korzystać z poszczególnych zapytań, których można używać w JBDC, na przykład nie można wstawić dużej liczby obiektów do jednej i tej samej tabeli za pomocą jednego zapytania.

Plik Message.java – prosta klasa trwałości Package hello; Public class Message { Private Long id; Private String text; Private Message nextMessage; Private Message () {} Public Message String text) { This.text = text; } Public Long getId () { Return id; } Atrybut identyfikatora Treść komunikatu Referencja do innego komunikatu

Private void setId(Long id) { This.id = id; Public String getText () { Return text; } Privatte void setText(String text) { This.text = text; } Public Long getNextMessage() { Return nextMessage; } Private void setnNextMessage(Long nextMessage) { This.nextMessage = nextMessage; }

Wyświetlenie na konsoli napisu Witaj świecie Message message = new Message("Witaj świecie"); System.out.println(message.getText()); Zapisywanie obiektu Message do bazy danych Session session = getSessionFactory( ).openSession(); Transaction tx = session.beginTransaction( ); Message message = new Message("Witaj świecie"); Session.save(message); Tx.commit ( ); Session.close ( );

Przekazanie do bazy danych polecenia SQL Insert into MESSAGE (MESSAGE_ID, MESSAGE_TEXT_NEXT_MESSAGE_ID) values (1, "Witaj świecie", null) Transaction tx = session.beginTransaction( ); Message message = new Message(Witaj świecie); Session.save(message); Tx.commit ( ); Session.close ( );

Pobieranie z bazy danych wszystkich komunikatów w kolejności alfabetycznej oraz wyświetlanie ich zawartości Session newSession = getSessionFactory ( ).openSession ( ); Transaction newTransaction = newSession.beginTransaction( ); List messages = newSession.finf("from Message as m order by m.text asc"); System.out.println("Znalezionych komunikatów: " + messages.size ( )); For (Iterator iter = messages.iterator( ); iter.hasNext( ); ) { Message message = (Message) iter.next( ); System.out.println(message.getText( )); } NewTransaction.commit( ); newSession.close( );

Przekształcenie zapytania na kod SQL w chwili wywoływania metody find( ). Select m.MESSAGE_ID, m.MESSAGE_TEXT, m.NEXT_MESSAGE_ID From MESSAGES m Order by m.MESSAGE_TEXT asc Znalezionych komunikat ó w: 1 Witaj świecie Taki kod powoduje wyświetlenie na konsoli napisu:

Prosty plik odwzorowania Hibernate w postaci XML <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" " <many-to-one name="nextMessage" cascade="all" column="NEXT_MESSAGE_ID" />

Główną zaletą Hibernata, jest jego prostota i łatwość użycia. Dzięki niemu nie trzeba pisać setek poleceń w SQLu. Hibernate robi to za nas. Poza tym jest intuicyjny i łatwy do nauki. Wydaję się on być najlepszą technologią umożliwiającą dostęp do bazy danych, występującą obecnie na rynku.

Bauer Ch., King G.: Hibernate w akcji, popraw wydajność aplikacji bazodanowych w Javie, Wydawnictwo HELION, Gliwice Minter D., Linwood J.: Hibernate od Nowicjusza do Profesjonalisty, Polish edition Copyright © 2007 by PowerNet article&id=14:hibernate-wprowadzenie&catid=8:hibernate&Itemid=7http://czajkowski.waw.pl/html/groovygrails/index.php?option=com_content&view= article&id=14:hibernate-wprowadzenie&catid=8:hibernate&Itemid= ephttp:// ep %E2%80%93-baza-danych-walidacja-wiadomosci-encje-hibernate/ %E2%80%93-baza-danych-walidacja-wiadomosci-encje-hibernate/