Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate



Podobne dokumenty
Podejście obiektowe do relacyjnych baz danych Hibernate.

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

NHibernate. Narzędzie mapowania obiektowo - relacyjnego

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

Metody dostępu do danych

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

Programowanie obiektowe

Hibernate mapowanie baz danych

Gdzie jest moja tabela?

Podstawowe wykorzystanie Hibernate

Programowanie wielowarstwowe i komponentowe

Programowanie obiektowe

1 Wprowadzenie do J2EE

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

Programowanie w języku Java WYKŁAD

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

JPA Java Persistance API

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

Podstawy frameworka Spring

Hibernate. Od Nowicjusza do Profesjonalisty. Dave Minter Jeff Linwood

EJB 3.0 (Enterprise JavaBeans 3.0)

Java i bazy danych. 1. JDBC podstawy, transakcje. 2. Mapowanie relacyjno obiektowe. Hibernate, przykład.

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Aplikacje Internetowe

Wprowadzenie do Doctrine ORM

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Java Persistence API - zagadnienia zaawansowane

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

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

Wybierz kategorię Java Web i typ projektu Web Application. Kliknij przycisk Next >.

Projektowanie aplikacji z bazami danych

Wdrożenie do projektu

Technologia informacyjna

Tomasz Dobek.

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

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Metody dostępu do danych

Zaawansowane Techniki Bazodanowe

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

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

Technologia Programowania 2016/2017 Wykªad 12

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

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

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

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

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

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

ORM w Javie. Adam Michalik 2007

Db4o obiektowa baza danych wersja.net

Paweł Rajba

Technologie dostępu do baz danych z aplikacji Javy:

Podstawowe informacje o technologii Java Persistence API - przykład

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

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Dostęp do baz danych w aplikacjach Java EE

ODWZOROWANIE OBIEKTOWO-RELACYJNE

WYKORZYSTANIE I ROZWÓJ WOLNEGO OPROGRAMOWANIA W WOJEWÓDZKIM WĘŹLE INFRASTRUKTURY INFORMACJI PRZESTRZENNEJ

Migracja do PostgreSQL za pomocą narzędzi Enterprise DB

Wzorce logiki dziedziny

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

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

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

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Zaawansowane aplikacje internetowe - laboratorium

Aplikacje Internetowe, Servlety, JSP i JDBC

Spis treści. Przedmowa

Hibernate. 1. Wprowadzenie. 2. Uruchomienie dostarczonego przykładu. 3. Własny przykład.

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

LINQ TO SQL w dużym skrócie jest to zintegrowany język zapytao pozwalający na mapowanie relacyjnych baz danych na model obiektowy.

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

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

przygotował: Bazy danych Paweł Kasprowski Wersja 2006Z

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

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

Kurs programowania aplikacji bazodanowych

Projektowanie aplikacji z bazami danych

akademia androida Składowanie danych część VI

Pojęcie systemu baz danych

mgr inż. Michał Paluch

Enterprise JavaBeans 3.0

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

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

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

Szkolenie autoryzowane. MS 6232 Wdrażanie bazy danych Microsoft SQL Server 2008 R2

Bazy danych 2. Wykład 1

Enterprise JavaBean 3.0

Relacyjne bazy danych a XML

TEMAT ĆWICZENIA Zapoznanie z technologią LINQ

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

Generowanie raportów

Hurtownie danych wykład 5

PHP: bazy danych, SQL, AJAX i JSON

Rozdział 48 Transpers generyczna mikroarchitektura warstwy dostępu do danych 1 Wstęp

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

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

Transkrypt:

Wirtualne przedsiębiorstwo II Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate Łukasz Macierzyński 157588 Daniel Nikończuk 157621 Kacper Oko 157626

Agenda 1. Co to jest mapowanie obiektowo-relacyjne (ORM)? 2. Relacyjne bazy danych kontra obiektowe. 3. Po co używać ORM? 4. Pierwsze kroki w Hibernate 5. Konfiguracja Hibernate a. Mapowanie za pomocą plików XML Mapowanie za pomocą adnotacji Javy 6. Prosty przykład. 7. Przykład w środowisku Eclipse. 8. Porównanie wydajności Hibernate a i JDBC. 9. Faktyczne działania Hibernate a. 10. Przykłady innych ORM. 11. Podsumowanie. 2/31

Cel wystąpienia Przedstawienie idei mapowania obiektowo-relacyjnego Zapoznanie słuchaczy z framework iem Hibernate Przedstawienie praktycznego zastosowania framework a Hibernate 3/31

Co to jest mapowanie obiektowo-relacyjne (ORM)? Mapowanie obiektowo-relacyjne (ang. Object-relational mapping) jest to konwertowanie danych z tabel w relacyjnej bazie danych na obiekty aplikacji klienckiej i na odwrót. Większość dzisiejszych aplikacji jest zorientowanych obiektowo, ale dane przechowuje się wciąż w relacyjnych bazach danych[1]. 4/31

Co to jest mapowanie obiektowo-relacyjne (ORM)? Rysunek 1. Mapowanie obiektowo-relacyjne[2]. 5/31

Relacyjne bazy danych kontra obiektowe bazy danych Relacyjne bazy danych są wciąż najbardziej popularne Obiektowe bazy danych nie są wystarczająco wspierane przez producentów SZBD Relacyjne bazy danych implementują szereg mechanizmów wspierających efektywną pracę 6/31

Po co używać ORM? Znaczne zredukowanie ilości pracy związanej z oprogramowaniem dostępu do danych Skorzystanie z zalet relacyjnych baz danych jednocześnie nie rezygnując z obiektowości programowania Uniezależnienie się od rodzaju DBMS a Automatyczna obsługa transakcji i pulą połączeń z bazą 7/31

Hibernate - ORM framework Hibernate - framework do realizacji warstwy dostępu do danych. Hibernate zwiększa wydajność operacji na bazie danych dzięki buforowaniu i minimalizacji liczby przesyłanych zapytań. Jest to projekt rozwijany jako open source. 8/31

Metody wytwarzania oprogramowania używając Hibernate a oraz Hibernate Tools Top down (dobre dla już istniejącego kodu) Zaimplementować model obiektowy Javy(JavaBeans) Napisać plik mapujący ręcznie lub wygenerować go używając adnotacji Wyeksportować tabele bazy danych używając Hibernate Tools Bottom up (dobre przy już istniejącej bazie) Zacząć z istniejącym modelem danych Użyć Hibernate Tools do wygenerowania plików mapujących Użyć Hibernate Tools do wygenerowania namiastek kodu Javy Wypełnić kod logiką biznesową Middle out (dobre przy nowym wytwarzaniu) Wyrazić konceptualny model obiektowy bezpośrednio przez plik mapujący Użyć Hibernate Tools do wygenerowania namiastek kodu Javy Wypełnić kod logiką biznesową Wyeksportować tabele bazy danych używając Hibernate Tools Meet in the middle (przy przesiadce z JDBC na Hibernate a) Zacząć z istniejącym modelem danych i istniejącymi klasami Javy Napisać plik mapujący łączący dwa modele 9/31

Używanie Hibernate a w kodzie Uzyskanie dostępu do obiektów persystentnych tak jak do normalnego obiektu POJO (Plain Old Java Object) Wykonywanie operacji DAO ( save, update, delete, etc.) do zapisywania zmian do bazy danych 10/31

Instalacja Hibernate a Najnowsza biblioteka Hibernate 3.5.1 http://www.hibernate.org/downloads.html lub poprzez Maven a. Biblioteki potrzebne do przedstawianego przykładu: org.hibernate:hibernate-core org.hibernate:hibernate-annotations org.hibernate:hibernate-commons annotations 11/31

Konfiguracja pliku hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory name="sesjehibernate" > <!-- local connection properties --> <property name="hibernate.connection.url">jdbc:localhost:1433</property> <property name="hibernate.connection.driver_class">driverdobazy</property> <property name="hibernate.connection.username">hibernateuser</property> <property name="hibernate.connection.password">hibernate123!</property> <!-- dialect for Microsoft SQL Server --> <property name="dialect">org.hibernate.dialect.sqlserverdialect</property> <property name="hibernate.show_sql">false</property> <property name="hibernate.transaction.factory_class"> org.hibernate.transaction.jdbctransactionfactory</property> </session-factory> </hibernate-configuration> 12/31

Klasa persytentna Plik Person.java: public class Person { private String name; private String surname; private int phonenumber; public Person {} } //gettery i settery Klasa persytentna musi być tzw. bean em. 13/31

Mapowanie za pomocą plików XML Plik Person.hbm.xml: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping 3.0.dtd"> <hibernate-mapping> <class name="person" table="persons"> <id name="id" type="int" column="id"> <generator class="increment"/> </id> <property name="name"/> <property name="surname" column="surname"/> <property name="phonenumber" column="phone_number </class> </hibernate-mapping> 14/31

Mapowanie za pomocą adnotacji Javy Plik Person.java: @Entity @Table(name = "Persons") public class Person { @Id @GeneratedValue @Column(name="id") private int id; @Column(name="name") private String name; @Column(name="surname") private String surname; @Column(name="phone_number") private int phonenumber; public Person() { } } //dalej gettery i settery 15/31

Po kolei w skrócie 1. Utworzenie pliku konfiguracyjnego i plików mapujących (lub adnotacji). 2. Utworzenie obiektu SessionFactory z obiektu Configuration. 3. Pobrać jedną sesje z SessionFactory. 4. Stworzyć zapytanie HQL. 5. Wykonać zapytanie dostając z powrotem np. listę obiektów javowych. 16/31

Przykład zapisu obiektu do bazy Person naszobiekt = new Person("Daniel", "Kowalski", 12312312); Session session = new Configuration().configure().buildSessionFactory().openSession(); Transaction t = session.begintransaction(); session.save(naszobiekt); t.commit(); session.close(); 17/31

Przykład odczytu Session session = new Configuration().configure().buildSessionFactory().openSession(); Query qry = session.createquery("from Person"); ArrayList<Person> persons = (ArrayList<Person>) qry.list(); session.close(); 18/31

HQL Hibernate Query Language Dający ogromne możliwości obiektowy język zapytań Hibernate tłumaczy HQL do SQL a Zapytania HQL są krótsze i bardziej czytelne niż odpowiedniki SQL 19/31

HQL Hibernate Query Language session.createquery( "from Person p where p.surname= :surname ). setstring("surname", "Kowalski"); session.createquery( "from Person p where p.phonenumber= :number ). setinteger( number", 11122233444"); 20/31

Przykład w środowisku Eclipse 21/31

Porównanie wydajności Ładowanie i wyświetlanie bitmapy Za pomocą Hibernate a Za pomocą JDBC Porównanie czasów wykonania pracy 22/31

Faktycznie działania Hibernate a Prezentacja audytów środowiska MS SQL Server 23/31

Zalety Hibernate a 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 24/31

Wady Hibernate a Posiada do tej pory wiele usterek Wsparcie techniczne i dokumentacja Hibernate a dostępna w Internecie jest niewystarczająca. Dla złożonych danych, mapowanie z obiektu do tabeli i vice versa zmniejsza wydajność i zwiększa czas konwersji. Hibernate nie pozwala używać niektórych zapytań, które są dostępne w JDBC, np. nie pozwala wstawiać wiele obiektów do tej samej tabeli używając jednego zapytania. 25/31

Hibernate czy zawsze warto? Używanie Hibernate a jest przesąda dla aplikacji, które: są proste i używają jednej bazy danych, która nigdy się nie zmieni wstawiają dane bezpośrednio do tabel, poza tym nie używa żadnych innych zapytań SQL nie ma w niej żadnych obiektów, które są zmapowane na dwie rożne tabele Hibernate w takim przypadku zwiększa niepotrzebnie liczbę warstw i złożoność aplikacji. Dla takich aplikacji najlepszym wyborem jest JDBC. 26/31

Przykłady innych ORM Java TopLink (Oracle) EclipseLink, ibatis Java Data Objects (JDO) Java Persistence API (JPA) Torque Cayenne Carbonado Enterprise Objects Framework, (MAC OS X) KeyAccess 27/31

Przykłady innych ORM cd..net NHibernate Entity Framework by Microsoft SubSonic NetTiers CodeSmith LINQ to SQL ObjectMapper.NET ibatis własny ORM 28/31

Podsumowanie Używanie framework ów ORM daje mnóstwo korzyści, lecz nie zawsze warto ich używać Hibernate jest jednym z najpopularniejszych framework ów ORM (Java oraz.net) chociaż nie jest wolny od wad Hibernate wspiera wiele narzędzi dla różnych środowisk (Ant, Maven, narzędzia Eclipse a) 29/31

Bibliografia 1. http://www.pcmag.com/encyclopedia_term/0,2542,t=objec t-relational+mapping&i=55645,00.asp (2010-04-20) 2. http://ms-groups.pl/tgnet/materiay2/ból Andrzej 'ENTITY FRAMEWORK W PRAKTYCE'/Andrzej_Bol_Entity Framework 3.ppt (2010-04-20) 3. http://lux.dmcs.pl/oro/wykladh1.ppt (2010-04-20) 4. http://confluence.sakaiproject.org/download/attachments/ 44794065/PersistenceHibernate.ppt (2010-04-21) 5. http://biblestudygroupatlas.googlecode.com/files/hibernate -1x2.pdf (2010-04-21) 30/31

Pytania 31/31