Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Odwzorowania relacyjno-obiektowe Hibernate relacje.

Podobne prezentacje


Prezentacja na temat: "Odwzorowania relacyjno-obiektowe Hibernate relacje."— Zapis prezentacji:

1 Odwzorowania relacyjno-obiektowe Hibernate relacje

2 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 2 Typy relacji Reprezentacja relacji przy pomocy pól typu innej encji, bądź też kolekcji encji Mnogościowy podział relacji –Jeden do jednego – @OneToOne –Jeden do wielu – @OneToMany –Wiele do jednego – @ManyToOne –Wiele do wielu – @ManyToMany Kierunkowy podział relacji –Relacja dwukierunkowa –Relacja jednokierunkowa

3 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 3 Relacje dwukierunkowe Kierunkowość determinuje możliwość nawigacji między powiązanymi instancjami klas trwałych. Asocjacja dwukierunkowa jest definiowana jako para asocjacji jednokierunkowych, ze wskazaniem jednej z nich jako głównej. W przypadku związku dwukierunkowego konieczne jest wskazanie właściciela relacji za pomocą elementu mappedBy Dla związków dwukierunkowych trzeba pamiętać, że w celu powiązania instancji dwóch encji ze sobą należy dokonać powiązania dla obu stron związku.

4 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 4 @OneToOne public @interface OneToOne { Class targetEntity( ) default void.class; CascadeType[] cascade( ) default {}; FetchType fetch( ) default EAGER; boolean optional( ) default true; String mappedBy( ) default ""; }

5 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 5 @JoinColumn @Entity public class Uzytkownik implements Serializable { @Id private int id; private String imie; @OneToOne @JoinColumn(name="adres_id") private Adres adres; }

6 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 6 Relacje - OneToOne @Entity public class Uzytkownik { @Id private int id; private String imie; @OneToOne @JoinColumn(name=adres_id") private Adres adres; }

7 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 7 Relacje - OneToOne @Entity public class Adres { @Id private int id; private String miasto; private String ulica; @OneToOne(mappedBy="adres") private Uzytkownik uzytkownik; }

8 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 8 @OneToMany public @interface OneToMany { Class targetEntity( ) default void.class; CascadeType[] cascade( ) default {}; FetchType fetch( ) default LAZY; String mappedBy( ) default ""; } Parametr mappedBy– nazwa pola klasy po drugiej stronie relacji

9 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 9 @ManyToMany public @interface ManyToMany { Class targetEntity( ) default void.class; CascadeType[] cascade( ) default {}; FetchType fetch( ) default LAZY; String mappedBy( ) default ""; }

10 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 10 @ManyToMany - przykład @Entity public class Uzytkownik { @Id private int id; private String imie; @ManyToMany @JoinTable(name = uzy_proj", joinColumns = @JoinColumn(name = uzytkownik_ID"), inverseJoinColumns = @JoinColumn(name = projekt_ID")) private Collection projekty; }

11 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 11 @OrderBy (I) Kolekcja może zostać uporządkowana według określonych kryteriów W przypadku kolekcji uporządkowanej wykorzystać należy typ List

12 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 12 @OrderBy (II) @Entity public class Uzytkownik { @Id private int id; private String name; @OneToMany(mappedBy=uzytkownik") @OrderBy(nazwisko") protected List dzieci; }

13 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 13 @JoinTable Parametr name – nazwa tabeli Parametr joinColumns – kolumna tabeli złączenia, stanowiąca klucz dla encji Parametr inverseJoinColumns – kolumna tabel złączenia, stanowiąca klucz dla encji po drugiej stronie relacji

14 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 14 Operacje kaskadowe –Definiowane dla relacji w encjach –Automatyczna propagacja operacji w głąb hierarchii relacji Oznacza to, że wszystkie operacje na encji mają powodować wykonanie takiej samej operacji dla powiązanych encji

15 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 15 Typy operacji kaskadowych (I) CascadeType.PERSIST – włączanie nowej encji do kontekstu CascadeType.MERGE – aktualizacja encji CascadeType.REMOVE – usuwanie encji CascadeType.REFRESH – odświeżanie stanu encji z bazy CascadeType.DETACH – odłączenie kolekcji CascadeType.ALL– wszystkie powyższe

16 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 16 Typy operacji kaskadowych (II) @OneToMany(cascade = CascadeType.ALL) @Cascade(org.hibernate.annotations.CascadeType. DELETE_ORPHAN) private List ocenaLista = new ArrayList (); @OneToMany( orphanRemoval = true ) private List ocenaLista = new ArrayList ();

17 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 17 Ładowanie leniwe Parametr fetch dla adnotacji relacyjnych –FetchType.EAGER – pobieranie natychmiastowe – domyślne dla @OneToOne i @ManyToOne –FetchType.LAZY – pobieranie opóźnione – domyślne dla @OneToMany i @ManyToMany Opóźnione pobranie encji jest możliwe jedynie, gdy podstawowa encja jest w stanie managed Próba pobrania encji oznaczonej jako LAZY i znajdującej się w stanie Detached spowoduje wyrzucenie wyjątku.

18 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 18 Inicjalizacja public Uzytkownik getUzytkownik(int id) { Uzytkownik uzytkownik = this.get(id); if (uzytkownik != null) { Hibernate.initialize(uzytkownik.getProjekt()); Hibernate.initialize(uzytkownik.getDzieci()); } return uzytkownik; }

19 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 19 @ElementCollection private List slowaKluczowe = new ArrayList ();

20 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 20 Przykłady relacji (I) @OneToOne(cascade=CascadeType.ALL) @Cascade(org.hibernate.annotations.CascadeType. DELETE_ORPHAN) DaneSerwisowe daneSerwisowe = new DaneSerwisowe();

21 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 21 Przykłady relacji (II) @ManyToOne private Dostawca dostawca;

22 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 22 Przykłady relacji (III) @ManyToOne private Uzytkownik uzytkownik; @OneToMany(mappedBy="uzytkownik") @OrderBy(clause="identyfikator") private List urzadzeniaLista = new ArrayList ();

23 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 23 Przykłady relacji (IV) @ManyToOne Uzytkownik uzytkownik; @OneToMany(mappedBy="uzytkownik cascade=CascadeType.ALL) @Cascade(org.hibernate.annotations.CascadeType. DELETE_ORPHAN) private List adresLista = new ArrayList ();

24 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 24 Przykłady relacji (V) @ManyToMany Set uzytkownicy = new HashSet (); @ManyToMany(mappedBy = "uzytkownicy") private Set grupy = new HashSet ();

25 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 25 Przykłady relacji (VI) @ManyToMany(mappedBy="producentLista", cascade=CascadeType.ALL) private List rodzajSprzetuLista = new ArrayList (); @ManyToMany(cascade=CascadeType.ALL) private List producentLista = new ArrayList ();

26 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 26 Przykłady relacji (VII) @ManyToMany List posiadaneUmiejetnosciLista = new ArrayList ();


Pobierz ppt "Odwzorowania relacyjno-obiektowe Hibernate relacje."

Podobne prezentacje


Reklamy Google