Podstawowe informacje o technologii Java Persistence API - przykład

Podobne dokumenty
Podstawowe informacje o technologii Java Persistence API - przykład

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

Projektowanie i wdrażanie systemów informatycznych. Dodanie aplikacji klienta uruchamianej przez przeglądarkę kontynuacja projektu:

Złożone komponenty JSF wg

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

Budowa aplikacji wielowarstwowych. Zastosowanie konwerterów oraz plików typu properties.

Wielowarstwowa aplikacja internetowa. Wykonanie widoku typu tabela. Pliki typu properties. wg

Budowa prostej aplikacji wielowarstwowej

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Złożone komponenty JSF wg

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Budowa aplikacji wielowarstwowych, zastosowanie obiektów transferowych, konwerterów i walidatorów

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

Programowanie komponentowe 5

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Zastosowanie komponentów EJB typu Session

Projekt INP Instrukcja 2. Autor Dr inż. Zofia Kruczkiewicz

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Zastosowanie słuchaczy zdarzeń wg

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

Facelets ViewHandler

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Budowa aplikacji wielowarstwowych cd Dostęp do bazy danych w oparciu o technologię ORM (Object Relational Mapping)

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń, zastosowanie walidatorów, wykonanie listy typu Drop Down List.

Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie. Zofia Kruczkiewicz

Java EE: JSF + EJB + JPA + CDI + BV

Programowanie wielowarstwowe i komponentowe

Java EE: JSF + EJB + JPA

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

Metody dostępu do danych

Wprowadzenie do technologii JavaServer Faces 2.2 na podstawie Wykład 2 Technologie internetowe

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

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

JavaServer Faces (JSF)

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

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Kontynuacja programu z lab2 refaktoryzacja kodu oparta na dodaniu obiektu transferowego oraz stronicowania tabeli w formularzu JSF

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Java Server Faces - wprowadzenie

Kontynuacja programu z lab3 zaawansowane renderowanie formularzy JSF

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Enterprise JavaBeans

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Aplikacje RMI Lab4

Zaawansowane aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium

Paweł Cieśla. Dokumentacja projektu

Zaawansowane aplikacje internetowe - laboratorium

Języki i metody programowania Java Lab2 podejście obiektowe

Podstawy technologii JavaServer Faces wg

Aplikacje WWW - laboratorium

Klasy i obiekty cz II

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania


Podstawowe wykorzystanie Hibernate

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Programowanie wielowarstwowe i komponentowe JSP, JSF

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Podstawy technologii JavaServer Faces wg

Budowa aplikacji wielowarstwowych. Zastosowanie technologii Ajax

Java Persistence API (JPA)

Katalog książek cz. 2

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

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Metody dostępu do danych

Budowa aplikacji wielowarstwowych. Zastosowanie technologii Ajax

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Aplikacje WWW - laboratorium

Java Persistence API. Class powinny być zaznaczone. Kliknij przycisk Finish.

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

termin Podobna wada 2) jak w Sklep_ , zal. 3.0 termin

Laboratorium 7 Blog: dodawanie i edycja wpisów

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Zaawansowane aplikacje internetowe

Projektowanie aplikacji internetowych laboratorium

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Programowanie obiektowe

Tworzenie projektu zawierającego aplet w środowisku NetBeans. lab1. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Leszek Stasiak Zastosowanie technologii LINQ w

Wprowadzenie do projektu QualitySpy

Wykład 2 TINT. XHTML tabele i ramki. Zofia Kruczkiewicz

Instrukcja 1 Laboratorium z Podstaw Inżynierii Oprogramowania. Relacja 1 do 1..0 instrukcja z lab1

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Java Server Faces narzędzie do implementacji w wy prezentacji

Transkrypt:

Podstawowe informacje o technologii Java Persistence API - przykład na podstawie https://docs.oracle.com/javaee/7/jeett.pdf Programowanie komponentowe 3_2 1

1. Wykonanie kopii programu Sklep_6 2

1. Wykonanie kopii programu Sklep_6 (cd) 3

2. Należy utworzyć pustą bazę danych w zakładce Services (prawy przycisk myszy na pozycji JavaDB po rozwinięciu pozycji Database i wybór Create Database)

3. Wpisanie nazwy bazy danych (Database Name), loginu (User Name) i hasła (Password) 5

4. Połączenie z pustą bazą danych (wybór pozycji Connect po kliknięciu prawym klawiszem myszy na połączeniu) 6

5. Widok utworzonej pustej bazy danych Produkt 7

6. Dodanie pliku persistence.xml do projektu, potrzebnego w procesie utrwalania danych metodą ORM - New/Other 8

7. Wybór Persistence/Persistence Unit 9

8. Wybór technologii EclipseLink do obsługi bazy danych metodą ORM

Wybór połączenia z bazą danych 9. Utworzenie połączenia opartego na JNDI nadanie nazwy jdbc/produkt

10. Gotowe połączenie z bazą danych - Finish 12

11. Pełna zawartość pliku Persistence.xml, pozwalająca na korzystanie z technologii ORM dla klas z adnotacją @Entity (tutaj klasa Produkt)

12. Dodanie nowej strony do obsługi bazy danych New/Other 14

13. Dodanie strony opartej na szablonie template.xml (1)

14. Dodanie strony baza.xhtml opartej na szablonie template.xml (2) jsf

15. Zawartość wygenerowanego pliku baza.xhtml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:h="http://xmlns.jcp.org/jsf/html"> <body> <ui:composition template="./../template.xhtml"> <ui:define name="title"> <h:outputtext value="#{bundle['jsf.baza.tytul']}"></h:outputtext> </ui:define> 17

16. Modyfikacja zawartości strony baza.xhtml opartej na szablonie template.xml <ui:define name="content"> <h:form> <h:commandlink action="#{managed_produkt.zapisz}" value="#{bundle['jsf.baza.zapisz']}"/><br/> <h:commandlink action="#{managed_produkt.pobierz}" </h:form> </ui:define> </ui:composition> </body> </html> value="#{bundle['jsf.baza.pobierz']}"/><br/> Pierwszy comandlink obsługuje zapis do bazy danych, a drugi odczyt z bazy danych 18

17. Uzupełnienie pliku Bundle.properties jsf.baza.tytul=utrwalanie danych jsf.baza.zapisz=zapisz do bazy danych jsf.baza.pobierz=pobierz z bazy danych 19

18. Uzupełnienie kodu pliku template.xhtml bloku left, czyli dodanie znacznika h:link do wywoływania strony baza.xhtml <div id="left"> <h:link outcome="/faces/jsf/dodaj_produkt2" value="dodaj produkt"/> <br/> <h:link outcome="/faces/jsf/lista_produktow" value="lista produktow"/><br/> <h:link outcome="/faces/warstwa_internetowa_jsf/baza" value="#{bundle['jsf.baza.tytul']}"/> </div> 20

19. Dodanie klasy do utrwalania obiektów typu Produkt New/Other 21

20. Utworzenie pliku wspierającego ORM klasy Produkt Enterprise JavaBeans/SessionBeans for Entity Classes

21. Wskazanie klasy Produkt1 typu Entity 23

22. Wybór Local jako zasięg dla klasy typu EJB oraz wpisanie nazwy orm w polu Package 24

23. Widok wygenerowanego interfejsu Produkt1FacadeLocal 25

24. Widok kontrolera ORM Produkt1Facade, który implementuje interfejs Produkt1FacadeLocal i dziedziczy po klasie abstrakcyjnej AbstractFacade

25. Wygenerowana klasa abstrakcyjna AbstractFacade (1)

26. Wygenerowana klasa abstrakcyjna AbstractFacade (2) 28

27. Utworzenie referencji do ziarna Produkt1Facade w klasie Fasada_warstwy_biznesowej (1)

28. Utworzenie referencji do ziarna Produkt1Facade w klasie Fasada_warstwy_biznesowej (2) Insert Code/Call Enterprise Bean i wybór z listy ziarna typu Produkt1Facade pojawiła się referencja typu Produkt1FacadeLocal

29. Przekazanie nadawania id klasie Produkt1 typu Entity mechanizmom utrwalania JPA modyfikacja kodu dodawania obiektu typu Produkt1 (Entity) w komponencie EJB Fasada_warstwy biznesowej public void utworz_produkt(string dane[], Date data) { Produkt1 produkt = new Produkt1(); // klucz++; // produkt.setid(new Long(klucz)); produkt.setnazwa(dane[0]); produkt.setcena(float.parsefloat(dane[1])); produkt.setpromocja(integer.parseint(dane[2])); produkt.setdata_produkcji(data); dodaj_produkt(produkt); } gdzie w klasie typu Produkt1 atrybut: strategy = GenerationType.AUTO oznacza możliwość generiowanie klucza głównego podczas utrwalania przez aplikację lub przez komponenty JPA @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; 31

29 (cd). Przekazanie nadawania id klasie Produkt1 typu Entity mechanizmom utrwalania JPA modyfikacja kodu dodawania obiektu typu Produkt1 (Entity) w komponencie EJB Fasada_warstwy biznesowej public ArrayList<ArrayList<String>> items() { ArrayList<ArrayList<String>> dane = new ArrayList(); for (Produkt1 p : produkty) { ArrayList<String> wiersz = new ArrayList(); wiersz.add(p.getid_().tostring()); wiersz.add(p.getnazwa()); wiersz.add("" + p.getcena()); wiersz.add("" + p.getpromocja()); wiersz.add(p.getdata_produkcji().tostring()); wiersz.add("" + p.cena_brutto()); dane.add(wiersz); } return dane; } gdzie w obiekcie typu Produkt1, przed zapisaniem do bazy danych id jest równe null: public Long getid_() { if(id==null) return new Long(0); return id; 32 }

30. Metody w klasie Fasada_wartwy_biznesowej do utrwalania danych i do pobierania danych z danych Produkt1. public void zapisz() { for (Produkt1 p : produkty) { Long id = p.getid(); if (id == null produkt1facade.find(p.getid()) == null) produkt1facade.create(p); } } public void pobierz() { List<Produkt1> pom = produkt1facade.findall(); produkty.clear(); produkty.addall(pom); } 33

31. Metody w klasie Managed_produkt public String zapisz() { fasada.zapisz(); return "/faces/index1"; } public String pobierz() { fasada.pobierz(); return "/faces/index1"; } Aktualzacja liczby stron po odczytaniu danych z bazy danych Aktualzacja modelu tabeli 34

32. Baza danych jest pusta przed uruchomieniem aplikacji 35

33. Uruchomienie aplikacji 36

34. Po uruchomieniu aplikacji tworzy się schemat bazy danych. 37

35. Prezentacja działania aplikacji zawartosc tabeli po wstawieniu danych 3 produktów 38

36. Zapis do bazy danych 39

37. Prezentacja bazy danych należy kliknąć prawym klawiszem myszy na tabelę Produkt1 i wybrać View data. 40

37 (cd) Tablica SEQUENCE zawiera wartość wykorzystywaną przy generowaniu klucza głównego, gdy adnotacja przy id w klasie Produkt1 jest: @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; 41

38. Prezentacja działania aplikacji zawartość tabeli po wstawieniu danych 4 produktów (przy zapisie do bazy danych następuje zmiana wartości id zapisanych 3 produktów) 42

39. Odczyt z bazy danych 43

40. Prezentacja działania aplikacji zawartość tabeli po odczycie z bazy danych 44