Sławomir Civic Białek 2008-09-28 HIBERNATE.

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Projektowanie bazy danych
Hibernate zapytania.
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
XML + relacyjne bazy danych
Odwzorowanie obiektowo-relacyjne
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
PHP + MySQL część II.
Implementacja asocjacji
Marcin Pamuła Mateusz Stefek
OOPC++ - wstêp, klasy1 Klasy Do struktury można dołączyć operacje działające na jej polach. struct date { int day, month, year; void set (int d, int m,
Data powstania: 2001 rok Autor i lider: Gavin King Najnowsza wersja: Licencja: Open Source.
Hibernate Klasy trwałe
Odwzorowania relacyjno-obiektowe Hibernate Tranzakcyjność i bezpieczeństwo danych.
Metody autoryzacji użytkowników wymaga integracji z systemem operacyjnym nie wymaga logowania mała pewność mechanizmu wymaga logowania duża pewność mechanizmu.
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
SQL-owskie szlaki górskie
Wykład 8 Wojciech Pieprzyca
Wykład 5 Wojciech Pieprzyca
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe.
Odwzorowania relacyjno-obiektowe Hibernate zapytania.
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.
Technologia.Net Bazy danych. Technologia ADO.Net Służy do dostarczania danych z rożnych źródeł (baz danych) do aplikacji Jest produktem Microsoft Umożliwia.
Język SQL (Structured Query Language) DDL (Data Definition Language)
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
Transakcje zarządzane kontenerem
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Tworzenie aplikacji mobilnych
MySQL bazy danych dla witryny
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 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.
Zpiratował Rafał Kaczyński. Jest to technologia pozwalająca mapować dane obiektowe na odpowiadające im struktury w bazach danych. Hibernate pozwala na.
Skalowanie aplikacji JPA na przykładzie Oracle TopLink Grid
PAT: Persistent Applications Toolkit Aplikacje bazodanowe bez bazy danych Tomasz Nazar.
Temat 1: Strukturalny język zapytań SQL
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 +
Marcin nowak, Wojciech baszczyk
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
Entity Framework worth it or not?
Piotr Czapiewski Wydział Informatyki ZUT Wykład 2.
Komendy SQL do pracy z danymi
Informatyka Stosowana – ROK II / III
Hibernate Podstawy.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
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)
Asocjacja,Kompozycja,Agregacja
Implementacja asocjacji (z atrybutami i bez) przy użyciu: referencji (kolekcji referencji) tablic asocjacyjnych przygotował: Kamil Kowalczyk.
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
PHP (wstęp) Personal Home Page Tools (PHP Tools)
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Iteracyjno-rozwojowy cykl oprogramowania 3
Strukturalny język zapytań SQL - historia
Technologie Informacyjne Bazy danych
Iteracyjno-rozwojowy cykl oprogramowania 2
Wykład 1-część druga Wstęp do inżynierii oprogramowania.
Tworzenie wątków w Javie
Iteracyjno-rozwojowy cykl oprogramowania 3
Zapis prezentacji:

Sławomir Civic Białek HIBERNATE

2 Plan prelekcji ● Czym jest Hibernate ● Konfiguracja i uruchomienie ● Najważnejsze klasy ● Klasy obiektów przechowywanych w bazie ● Podstawowe operacje ● Relacje ● Zapytania ● Co dalej?

3 Czym jest Hibernate ● ORM (Object-Relational Mapping) ● LGPL ● Java (oraz.NET) ● Plain Old Java Objects (POJO) ● Hibernate vs EJB3, JPA ● Pakiety: ● Core ● Annotations ● Tools ● (Entity Manager)

4 Czym jest Hibernate Źródło:

5 Czym jest Hibernate ● Dialekty: ● DB2 ● PostgreSQL ● MySQL ● Oracle ● Sybase ● MS SQL ● SAP DB ● Hypersonic SQL ● Interbase, Firebird

6 Konfiguracja i uruchomieni ● Wymagane: ● antlr.jar ● dom4j.jar ● commons-collections.jar ● javassist.jar ● jta.jar ● ejb3-persistence.jar ● slf4j-api.jar ● logback-core.jar ● logback-classic.jar ● hibernate3.jar (hibernate-core.jar) ● hibernate-annotations.jar ● hibernate-commons-annotations.jar ● postgresql jdbc4.jar

7 Konfiguracja i uruchomienie <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" " org.postgresql.Driver jdbc:postgresql://localhost/jWAF postgres password org.hibernate.dialect.PostgreSQLDialect thread false create

8 Konfiguracja i uruchomienie ● Logowanie: false ${log.dir}/hibernate.log %date %level [%thread] %logger{10} [%file : %line] %msg%n ${log.arch.dir}/hibernate-%d{yyyy-MM-dd}.log

9 Konfiguracja i uruchomienie ● Logowanie:

10 Najważniejsze klasy ● AnnotationConfiguration / Configuration ● configure() ● buildSessionFactory() ● SessionFactory ● getCurrentSession() / openSession() ● Session ● beginTransaction() / getTransaction() ● Transaction ● begin() / commit() / rollback() ● Query / SQLQuery

11 Klasy POJO package model; import javax.persistence.*; import public class Uzytkownik { private long id; private String ; private String imie; private String nazwisko; private Set wiadomosciOd; private public long getId() { return id; } public void setId(long id) { this.id = id; public String get () { return ; } public void set (String ) { this. = ; public String getImie() { return imie; } public void setImie(String imie) {this.imie = imie; public String getNazwisko() { return nazwisko; } public void setNazwisko(String nazwisko) { this.nazwisko = nazwisko; = "uzytkownikOd") public Set getWiadomosciOd() { return wiadomosciOd; } public void setWiadomosciOd(Set wiadomosciOd) { this.wiadomosciOd = wiadomosciOd; = "uzytkownikDo") public Set getWiadomosciDo() { return wiadomosciDo; } public void setWiadomosciDo(Set wiadomosciDo) { this.wiadomosciDo = wiadomosciDo; } }

12 Klasy POJO package model; import java.util.Date; import javax.persistence.*; import public class private long (fetch=FetchType.LAZY) private Uzytkownik (fetch=FetchType.LAZY) private Uzytkownik private Date private String private String tresc; public long getId() { return id; } public void setId(long id) { this.id = id; } public Date getDateTime() { return dateTime; } public void setDateTime(Date dateTime) { this.dateTime = dateTime; } public String getTemat() { return temat; } public void setTemat(String temat) { this.temat = temat; } public String getTresc() { return tresc; } public void setTresc(String tresc) { this.tresc = tresc; } public Uzytkownik getUzytkownikOd() { return uzytkownikOd; } public void setUzytkownikOd(Uzytkownik uzytkownikOd) { this.uzytkownikOd = uzytkownikOd; } public Uzytkownik getUzytkownikDo() { return uzytkownikDo; } public void setUzytkownikDo(Uzytkownik uzytkownikDo) { this.uzytkownikDo = uzytkownikDo; } }

13 Podstawowe operacje sessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.getCurrentSession(); Transaction t = session.beginTransaction(); ///..... t.commit(); Uzytkownik user1 = new Uzytkownik(); user1.setImie(“...”); user1.setNazwisko(“...”); user1.set (“...”); session.save(user1);

14 Podstawowe operacje Uzytkownik user = (Uzytkownik)session.get(Uzytkownik.class, (long)1); session.delete(user); Uzytkownik user = (Uzytkownik)session.get(Uzytkownik.class, (long)1); user.save(); Uzytkownik user1 = (Uzytkownik)session.get(Uzytkownik.class, (long)1); Uzytkownik user2 = (Uzytkownik)session.get(Uzytkownik.class, (long)2); Wiadomosc msg = new Wiadomosc(); msg.setTresc(“.....”); msg.setUzytkownikOd(user1); msg.setUzytkownikDo(user2); session.save(msg);

15 Zapytania ● Nawigacja po obiektach ● Uzytkownik od = wiadomosc.getUzytkownikOd() ● Wg klucza ● Wiadomosc msg = (Wiadomosc)session.get(Wiadomosc.class, (long)1); ● Hibernate Query Language (HQL) ● Hibernate Criteria API ● natywny SQL

16 Zapytania - HQL String queryString = "from Uzytkownik user where user. like :searchString"; List result = session.createQuery(queryString).setString("searchString", String queryString = "from Wiadomosc w where w.uzytkownikOd = :user"; List Result = session.createQuery(queryString).setEntity("user", user1).list(); String queryString = "from Wiadomosc w where w.uzytkownikOd = :user"; List result = session.createQuery(queryString).setParameter( "user", user1, Hibernate.entity(Uzytkownik.class) ).list(); ● Można stosować: operatory SQL, złączenia, agregacje, grupowanie. ● Nazwy klas, a nie tabel itd.

17 Zapytania – Criteria API session.createCriteria(Uzytkownik.class); Criterion Eq = Expression.eq(" ", Criteria crit = session.createCriteria(Uzytkownik.class); crit.add( Eq); User user = (User) crit.uniqueResult(); session.createCriteria(Uzytkownik.class).add( Expression.isNull(" ") ).list(); Criteria crit = session.createCriteria(Uzytkownik.class).add( Expression.and( Expression.like("imie", "A%"), Expression.in("nazwisko", nazwiska) ).addOrder( Order.asc("nazwisko") ).addOrder( Order.asc("imie") ).;

18 Co dalej? ● ● Hibernate In Action ● Transakcje ● Polimorfizm ● Optymalizacja ● Cache'owanie