Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
Projektowanie bazy danych
Klasy i obiekty.
Hibernate zapytania.
SQL – Strukturalny język zapytań
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
Odwzorowanie obiektowo-relacyjne
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
BD-LAB4 Wojciech Pieprzyca
Programowanie obiektowe w Javie
Marcin Pamuła Mateusz Stefek
MS Access 2000 Tworzenie tabel Piotr Górczyński 2005.
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
ODE Informacje wstępne. Pojęcia podstawowe n Obiektowa baza danych u język komunikacji u ziarnistość obiektów u identyfikacja obiektów n Transakcja -
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
Hibernate Klasy trwałe
Odwzorowania relacyjno-obiektowe Hibernate Tranzakcyjność i bezpieczeństwo danych.
Język definicji danych (Data Definition Language)
C++ wykład 2 ( ) Klasy i obiekty.
Wykład 8 Wojciech Pieprzyca
Odwzorowania relacyjno-obiektowe Hibernate zapytania.
Projektowanie warstwy serwera DisplayTag. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Hibernate relacje.
Spring podstawy.
Hibernate uzupełnienie
Odwzorowania relacyjno-obiektowe Hibernate Tranzakcyjność i bezpieczeństwo danych.
Projektowanie warstwy serwera Wprowadzenie. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Język SQL (Structured Query Language) DDL (Data Definition Language)
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
SQL – Structured Query Language (1)
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Programowanie obiektowe III rok EiT
SQL - Structured Query Language
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 3.
Programowanie obiektowe 2013/2014
Zpiratował Rafał Kaczyński. Jest to technologia pozwalająca mapować dane obiektowe na odpowiadające im struktury w bazach danych. Hibernate pozwala na.
Programowanie w języku C++
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Systemy Baz Danych Wykład III
Marcin nowak, Wojciech baszczyk
Programowanie strukturalne i obiektowe C++
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
Piotr Czapiewski Wydział Informatyki ZUT Wykład 2.
Komendy SQL do pracy z danymi
Informatyka Stosowana – ROK II / III
PROGRAMOWANIE W JAVA Informatyka Stosowana – ROK II / III Laboratoria mgr inż. Krzysztof Bzowski.
Hibernate Podstawy.
Odwzorowania relacyjno-obiektowe Hibernate preselekcja.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Paweł Starzyk Obiektowe metody projektowania systemów
Konfiguracja HIBERnate, postgresQL + przykładowa aplikacja
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Podstawowe konstrukcje języka Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin.
PHP (wstęp) Personal Home Page Tools (PHP Tools)
Wątki, programowanie współbieżne
(według:
Programowanie Obiektowe – Wykład 2
PGO Interfejsy Michail Mokkas.
Technologie Informacyjne Bazy danych
PGO Porównywanie obiektów
Zapis prezentacji:

Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 2 Klasy trwałe Podstawowym pojęciem w Java Persistence jest encja. Encja to lekki obiekt służący do reprezentacji trwałych danych Klasyczne POJO - (PlainOldJava Objects) –Bezargumentowy konstruktor oznaczony jako public lub protected –Brak oznaczenia final dla klasy, jak i dla pól i metod –Implementacja interfejsu Serializable w przypadku transferu encji

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 3 Definiowanie klasy trwałej (I) Klasa oznaczona Możliwość zdefiniowania nazwy tabeli dzięki Adnotacje dla metod get pól klasy lub zmiennych Każda encja musi posiadać klucz główny. dla klucza głównego

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 4 Definiowanie klasy trwałej (II) Pola odpowiadające kolumnom tabeli Opcjonalna określająca nazwę kolumny Adnotacje odpowiedzialne za relacje Pola nie odpowiadające kolumnom w bazie oznaczone

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Entity { String name() default ""; }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Table { String name() default ""; String catalog() default ""; String schema() default ""; UniqueConstraint []uniqueConstraints() default {}; }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego package Basic { FetchType fetch() default EAGER; boolean optional() default true; }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Column { String name() default ""; boolean unique() default false; boolean nullable() default true; boolean insertable() default true; boolean updateable() default true;.....

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego (II)..... String columnDefinition() default ""; String table() default ""; int length() default 255; int precision() default 0; int scale() default 0; boolean specified() default true; }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu FIELD}) Retention(RUNTIME) Id { }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu GeneratedValue { GenerationType strategy() default AUTO; String generator() default ""; }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 12 Typy generatorów kluczy głównych IDENTITY – baza danych generuje klucze główne - SERIAL, IDENTITY SEQUENCE TABLE – wykorzystanie tabeli do generowania kluczy głównych IDCLASS AUTO –MySQL - IDENTITY –Resin - IDENTITY –Postgres - SEQUENCE –Oracle - SEQUENCE

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 13 Inne private Date private Typ String opisXML;

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 14 max=)

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu private int optLock;

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 16 Klasy public class Uzytkownik private Long id; private String imie; public Long getId() {return id;} private void setId(Long id) {this.id = id;} public String getImie() {return imie;} public void setImie(String imie) { this.imie = imie;} } CREATE TABLE uzytkownik ( id bigint NOT NULL, imie character varying(255), CONSTRAINT uzytkownik_pkey PRIMARY KEY (id) )

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 17 Przykładowy obiekt domenowy public class Uzytkownik = "Uzytkownik_SEQUENCE", sequenceName = "Uzytkownik_SEQ") private int id; private String nazwisko=""; private String imie=""; private String telefon="";....

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 18 Przykładowy obiekt domenowy (II) private String login = ""; private String haslo = private = "pokoj_id") private Pokoj pokoj;.....

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 19 Przykładowy obiekt domenowy private Integer = false, scale = 2) private Float = 1000) private String opis; }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 20 Unikalność = true, length = 20) private String name=spotkania", uniqueConstraints = dzien"})} )

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 21 Cykl życia (I) W pewnych sytuacjach synchronizacja stanu obiektów z bazą danych może nastąpić przed wykonaniem pewnych zapytań, aby zapewnić spójność odczytu. Hibernate posiada mechanizm umożliwiający określenie, które obiekty zostały zmodyfikowane w ramach transakcji. Mechanizm ten powoduje, że synchronizacji są poddawane tylko obiekty zmodyfikowane. W Hibernate mechanizm ten nazywa się automatic dirty checking. Cecha transparent transaction-level write-behind odpowiada ze synchronizacje stanu obiektu z bazą danych, aby odbywała się ona najpóźniej jak to jest tylko możliwe.

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 22 Cykl życia (II) Hibernate synchronizuje sesje w następujących przypadkach: –Przed wykonaniem pewnych zapytań. W celu zachowania spójności transakcji –Przy zatwierdzaniu transakcji –W przypadku jawnego wywołania metody flush() Kolejność wykonywania operacji przy synchronizacji: –Zapis wszystkich obiektów, w kolejności w jakiej były wywołane metody save() –Aktualizacja wszystkich obiektów –Dodanie, aktualizacja, usunięcie obiektów z kolekcji –Usunięcie obiektów

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 23 Cykl życia (III) Nowy (new) –obiekt utworzony, jednak nie włączony do żadnego trwałego kontekstu Zarządzany (managed) –obiekt utworzony i włączony do kontekstu przy pomocy menadżera encji, posiada klucz główny Oddzielony (detached) –obiekt posiada klucz główny, jednak nie jest obecnie skojarzony z żadnym kontekstem Usunięty (removed) –obiekt posiada klucz główny, jest skojarzony z trwałym kontekstem i został wskazany do usunięcia z bazy danych

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 24 Cykl życia (IV)

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 25 Klasa DAO public class UzytkownikDAOImpl implements UzytkownikDAO protected SessionFactory sessionFactory;......

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 26 Klasa DAO (II) public class UzytkownikDAOImpl extends HibernateDaoSupport implements UzytkownikDAO { public void Factory") SessionFactory factory) { setSessionFactory(factory); }.....

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 27 Pobieranie obiektu (I) public Uzytkownik get(int id) { Uzytkownik u = (Uzytkownik) sessionFactory.getCurrentSession().load(Uzytkownik.class, id); return u; } public Uzytkownik get(int id) { Uzytkownik u = (Uzytkownik) sessionFactory.getCurrentSession().get(Uzytkownik.class, id); return u; }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 28 Pobieranie obiektu (II) public Uzytkownik get(int id) { Uzytkownik u = null; u = (Uzytkownik) getHibernateTemplate().load(Uzytkownik.class, id); return u; } public ArrayList findAll() { ArrayList u = (ArrayList ) getHibernateTemplate().find("from Uzytkownik"); return u; }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 29 Pobieranie obiektu (III) public ArrayList findByPokojId(int id) { ArrayList u = (ArrayList ) getHibernateTemplate().find("from Uzytkownik where pokoj_id = ?", id); return u; } public Uzytkownik findByLogin(String login) { ArrayList u = (ArrayList ) getHibernateTemplate().find("from Uzytkownik where login = ?", login); if ( u==null || u.isEmpty()) return null; return u.get(0); }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 30 Pobieranie obiektu (IV) public Uzytkownik getUzytkownikDoEdycji(int id) { Uzytkownik uzytkownik = this.get(id); if (uzytkownik != null) { getHibernateTemplate().initialize(uzytkownik.getDzieciLista()); } return uzytkownik; }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 31 Zapisywanie obiektu public void persist(Uzytkownik u) { sessionFactory.getCurrentSession().persist(u); } public void save(Uzytkownik u) { sessionFactory.getCurrentSession().save(u); }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 32 Edycja obiektu public void update(Uzytkownik u) { sessionFactory.getCurrentSession(). update(u); } public void saveOrUpdate(Uzytkownik u) { sessionFactory.getCurrentSession(). saveOrUpdate(u); } public final void refresh(Uzytkownik u) { sessionFactory.getCurrentSession(). refresh(u); }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 33 Usuwanie obiektu public void delete(Uzytkownik u) { sessionFactory.getCurrentSession().delete(u); }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 34 Pobieranie obiektu session getSession() getHibernateTemplate().getSessionFactory(). getCurrentSession()