Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe.

Podobne prezentacje


Prezentacja na temat: "Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe."— Zapis prezentacji:

1 Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe

2 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

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

4 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 adnotacja @Column, określająca nazwę kolumny Adnotacje odpowiedzialne za relacje Pola nie odpowiadające kolumnom w bazie oznaczone adnotacją @Transient

5 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 5 @Entity package javax.persistence; @Target(TYPE) @Retention(RUNTIME) public @interface Entity { String name() default ""; }

6 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 6 @Table package javax.persistence; @Target(TYPE) @Retention(RUNTIME) public @interface Table { String name() default ""; String catalog() default ""; String schema() default ""; UniqueConstraint []uniqueConstraints() default {}; }

7 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 7 @Basic package javax.persistence; @Target({Method, FIELD}) @Retention(RUNTIME) public @interface Basic { FetchType fetch() default EAGER; boolean optional() default true; }

8 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 8 @Column (I) @Target({Method, FIELD}) @Retention(RUNTIME) public @interface Column { String name() default ""; boolean unique() default false; boolean nullable() default true; boolean insertable() default true; boolean updateable() default true;.....

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

10 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 10 @Id @Target({METHOD, FIELD}) Retention(RUNTIME) public @interface Id { }

11 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 11 @GeneratedValue @Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface GeneratedValue { GenerationType strategy() default AUTO; String generator() default ""; }

12 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

13 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 13 Inne annotacje @Temporal(TemporalType.DATE) //@Temporal(TemporalType.TIMESTAMP) private Date dataUrodzenia; @Enumerated(EnumType.STRING) private Typ typ; @Lob String opisXML;

14 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 14 Ograniczenia @Length(min=, max=) @Max(value=) @Min(value=) @Past @Future @Range(min=, max=) @Size(min=, max=)

15 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 15 @Version @Version() private int optLock;

16 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 16 Klasy trwałe @Entity public class Uzytkownik { @Id 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) )

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

18 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 = ""; @Transient private String pokoj_id="0"; @ManyToOne @JoinColumn(name = "pokoj_id") private Pokoj pokoj;.....

19 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 19 Przykładowy obiekt domenowy (III) @Column(nullable = false) @Min(0) @Max(999) private Integer numerPracowniczy; @Column(nullable = false, scale = 2) private Float wzrost; @Column(length = 1000) private String opis;....... }

20 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 20 Unikalność danych @Column(unique = true, length = 20) private String login; @Table( name=spotkania", uniqueConstraints = {@UniqueConstraint(columnNames={miesiac", dzien"})} )

21 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.

22 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

23 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

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

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

26 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 setHibernateSessionFactory(@Qualifier("hibernateSession Factory") SessionFactory factory) { setSessionFactory(factory); }.....

27 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; }

28 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; }

29 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); }

30 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; }

31 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); }

32 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); }

33 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); }

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


Pobierz ppt "Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe."

Podobne prezentacje


Reklamy Google