Podejście obiektowe do relacyjnych baz danych Hibernate.

Podobne dokumenty
Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

Metody dostępu do danych

Podstawowe wykorzystanie Hibernate

Hibernate mapowanie baz danych

NHibernate. Narzędzie mapowania obiektowo - relacyjnego

Programowanie wielowarstwowe i komponentowe

Aplikacje bazodanowe. dr inż. Arkadiusz Mirakowski

Programowanie w języku Java. Bazy danych SQLite w Javie

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

Zaawansowane Techniki Bazodanowe

Wprowadzenie do JDBC z wykorzystaniem bazy H2

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

przygotował: Bazy danych Paweł Kasprowski Wersja 2006Z

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

JAVA I BAZY DANYCH. MATERIAŁY:

JAVA bazy danych. na bazie: Język Java - Podstawy Programowania - Jacek Rumiński

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Programowanie Obiektowe Java

Programowanie Obiektowe Java

Aplikacje Internetowe

Wzorce logiki dziedziny

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

JDBC. Plan ćwiczenia. Wywoływanie poleceń SQL z języków programowania. Plan ćwiczenia cd. Wprowadzenie do laboratorium

Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych

Typy sterowników. Rozdział 21 JDBC. Podstawowe kroki aplikacji. Historia. Program napisany w języku Java JDBC API. Menadżer sterowników JDBC

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

Bazy danych SQLite w Javie

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Gdzie jest moja tabela?

Wzorce dystrybucji i wspólbieżności autonomicznej

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

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

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Wdrożenie do projektu

Język SQL, zajęcia nr 1

Bartosz Jachnik - Kino

Kurs programowania aplikacji bazodanowych

JDBC (Java Database Connectivity vit )

SYSTEM MONITORINGU PARAMETRÓW WĘZŁÓW PRZECHOWYWANIA DANYCH DLA PROJEKTU KRAJOWY MAGAZYN DANYCH PODRĘCZNIK DEWELOPERA

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

Programowanie obiektowe

Relacyjne bazy danych. Podstawy SQL

PHP: bazy danych, SQL, AJAX i JSON

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Technologia Programowania 2016/2017 Wykªad 12

Relacyjne bazy danych. Podstawy SQL

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Łączenie z bazą danych przykładowa klasa infpolaczenie import java.sql.drivermanager; import java.sql.connection; import java.sql.

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Instrukcja laboratoryjna nr.4

Bazy danych i usługi sieciowe

Bazy Danych i Usługi Sieciowe

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

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Database Connectivity

Wykład 05 Bazy danych

Ref. 7 - Język SQL - polecenia DDL i DML

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Metody dostępu do danych

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

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

Bazy danych i usługi sieciowe

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

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Podstawy otwartych języków programowania Java Database Connectivity (JDBC)

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

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

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

Programowanie w języku Java WYKŁAD

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

MAS dr. Inż. Mariusz Trzaska

P o d s t a w y j ę z y k a S Q L

JPA Java Persistance API

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Programowanie obiektowe

MSI dr. Inż. Mariusz Trzaska. obiektowych językach programowania

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

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Wstęp do relacyjnych baz danych. Jan Bartoszek

Paweł Rajba

NHibernate - badanie możliwości i opracowanie przykładów wykorzystania technologii ORM Pollitechnika Koszalinska Wlodzimierz Khadzhynov

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

prepared by: Programowanie WWW Model-View-Controller

Imię i Nazwisko Data Ocena. Laboratorium 7

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Post-relacyjne bazy danych

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Wykład 5. SQL praca z tabelami 2

Transkrypt:

Podejście obiektowe do relacyjnych baz danych Hibernate.

Plan wykładu Czym jest Hibernate? Jakie są zalety pracy z Hibernate? Jak skonfigurować Hibernate? Jak korzystać z Hibernate? Praktyczne przykłady wykorzystania Hibernate(Hibernate Tools) Porównanie wydajności JDBC vs Hibernate

Czym jest Hibernate? Hibernate jest darmową biblioteką, umożliwiającą odwzorowanie relacyjnych baz danych na obiekty Java. Dzięki czemu można napisać aplikacje bazodanową bez znajomości języka SQL.

Jakie są zalety Hibernate? Odwzorowanie danych na obiekty Java Wygodny dostęp do uzyskanych danych Obsługa wielu dialektów SQL Obiektowy język HQL przenoszalny na inne bazy danych obsługiwane przez Hibernate Odseparowanie definicji struktury bazy danych poprzez anotacje lub pliki xml Szybszy czas tworzenia aplikacji

Jak skonfigurować Hibernate? 1) Napisać/wygenerować plik konfiguracyjny hibernate.cfg.xml <hibernate-configuration > <session-factory> <property name="connection.driver_class">org.firebirdsql.jdbc.fbdriver</property> <property name="connection.url">jdbc:firebirdsql:localhost:d:/hibernate.gdb</property> <property name="connection.username">sysdba</property> <property name="connection.password">masterkey</property> <property name="dialect">org.hibernate.dialect.firebirddialect</property> <property name="format_sql">true</property> <property name="show_sql">true</property> <mapping resource="hbm/pracownik.hbm.xml" /> <mapping resource="hbm/dzial.hbm.xml" /> <mapping resource="hbm/stanowisko.hbm.xml" /> </session-factory> </hibernate-configuration>

Jak skonfigurować Hibernate? 2) Napisać wygenerować pliki mapowań tabel bazy danych <hibernate-mapping> <class name="hbm.classes.pracownik" table="pracownik"> <id name="idpracownik" type="int"> <column name="id_pracownik" /> <generator class="increment" /> </id> <property name="imie" type="string"> <column name="imie" length="30" not-null="true" /> </property> <property name="nazwisko" type="string"> <column name="nazwisko" length="50" not-null="true" /> </property> <property name="dataurodzenia" type="date"> <column name="data_urodzenia" length="10" /> </property> <many-to-one name="stanowisko" class="hbm.classes.stanowisko" lazy="false"> <column name="id_stanowisko" not-null="true" /> </many-to-one> <set name="dzials" inverse="false" table="prac_dzial" lazy="true"> <key> <column name="id_pracownik" not-null="true"/> </key> <many-to-many class="hbm.classes.dzial"> <column name="id_dzialu" not-null="true" /> </many-to-many> </set> </class> </hibernate-mapping>

Jak skonfigurować Hibernate? 3) Napisać/wygenerować klasę Java odpowiadającą zdefiniowanemu wcześniej mapowaniu public class Pracownik implements java.io.serializable { private int idpracownik; private String imie; private String nazwisko; private Date dataurodzenia; private Stanowisko stanowisko; private Set dzials; //ponizej settery i gettery wszystkich pól private int getidpracownik() { return idpracownik; } } private void setidpracownik(int idpracownik) { this.idpracownik = idpracownik; }

Jak skonfigurować Hibernate? 4) Utworzenie fabryki sesji SessionFactory sessionfactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory(); Session session = sessionfactory.opensession(); Na obiekcie sesji będziemy wykonywać wszystkie operacje związane z bazą danych.

Jak korzystać z Hibernate? Utworzenie fabryki sesji i pobranie sesji SessionFactory sessionfactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory(); Session session = sessionfactory.opensession(); Odpowiednik początkowej konfiguracji w JDBC try { Class.forName("org.firebirdsql.jdbc.FBDriver"); Connection con = DriverManager.getConnection( "jdbc:firebirdsql:localhost:d:/hibernate.gdb", "sysdba", "masterkey"); Statement statement = con.createstatement(); } catch(exception e){ e.printstacktrace(); }

Jak korzystać z Hibernate? Pobieranie elementu z bazy danych Pracownik pracownik = (Pracownik)session.load(Pracownik.class, 1); pracownik.getimie(),pracownik.getnazwisko(),... String query = SELECT IMIE, NAZWISKO, DATA_URODZENIA + FROM PRACOWNIK + WHERE ID_PRACOWNIK =? ; PreparedStatement pstatement = con.preparestatement(query); pstatement.setint(1,1); ResultSet result = pstatement.executequery(); result.next(); result.getstring(0),result.getstring(1),

Jak korzystać z Hibernate? Zapisanie elementu do bazy danych Pracownik pracownik = new Pracownik(); pracownik.setimie( Jan ); pracownik.setnazwisko( Kowalski ); pracownik.setdataurodzenia(new Date()); session.save(pracownik); String query = INSERT INTO PRACOWNIK(IMIE, NAZWISKO, + DATA_URODZENIA) + VALUES(?,?,?) ; PreparedStatement pstatement = con.preparestatement(query); pstatement.setstring(1, Jan ); pstatement.setstring(2, Kowalski ); pstatement.setdate(3,new Date()); pstatement.execute();

Jak korzystać z Hibernate? Modyfikowanie elementu bazy danych Pracownik pracownik = (Pracownik)session.load(Pracownik.class, 1); pracownik.setimie(imieparam); session.update(pracownik); String query = SELECT IMIE, NAZWISKO,DATA_URODZENIA + FROM PRACOWNIK + WHERE ID_PRACOWNIK =? ; PreparedStatement pstatement = con.preparestatement(query); pstatement.setint(1,1); ResultSet result = pstatement.executequery(); result.next(); String nazwisko = result.getstring(1); String data = result.getdate(2); query = UPDATE PRACOWNIK SET IMIE =?, NAZWISKO =?, DATA_URODZENIA =? WHERE ID_PRACOWNIK =? ; PreparedStatement pstatement = con.preparestatement(query); pstatement.setstring(1, imieparam); pstatement.setstring(2, nazwisko); pstatement.setdate(3, data); pstatement.setint(4, 1); pstatement.execute();

Jak korzystać z Hibernate? Pobieranie danych z bazy danych Criteria criteria = session.createcriteria(pracownik.class); criteria.add(restrictions.like( imie, J, MatchMode.START)); criteria.addorder(order.desc( nazwisko )); criteria.setfirstresult(5); criteria.setmaxresults(10); List<Pracownik> listapracownikow = criteria.list(); ProjectionList listprojections = Projections.projectionList(); listprojections.add(projections.property( imie )); listprojections.add(projections.property( nazwisko )); criteria.setprojection(listprojections); List<Object[]> listapracownikow = criteria.list();

Jak korzystać z Hibernate? Łączenie tabel Criteria criteria = session.createcriteria(pracownik.class); ProjectionList listprojections = Projections.projectionList(); listprojections.add(projections.property( imie )); listprojections.add(projections.property( nazwisko )); listprojections.add(projections.property( stanowiskopracownika.nazwa )); criteria.setprojection(listprojections); criteria.createalias("stanowisko", "stanowiskopracownika", JoinFragment.LEFT_OUTER_JOIN); List<Object[]> listapracownikow = criteria.list();

Część praktyczna Wygenerowanie pliku konfiguracyjnego Wygenerowanie mapowań Wygenerowanie klas Utworzenie fabryk sesji Przykłady z wykładu Wymagane środowisko Eclipse Hibernate Tools Hibernate Core 3.x Odpowiednie sterowniki do bazy danych

Część praktyczna diagram bazy danych

Porównanie wydajności JDBC vs Hibernate Hibernate Select Hibernate seria(select, update, insert, delete) 5000 180 4500 160 4000 140 3500 120 Czas w milisekundach 3000 2500 2000 1500 JDBC HIBERNATE Czas w milisekundach 100 80 60 JDBC HIBERNATE 1000 40 500 20 0 0 10 100 1000 10000 100000 10 100 1000 10000 100000 Ilość rekordów Ilość rekordów

Pytania???