Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Wielkość: px
Rozpocząć pokaz od strony:

Download "Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego www.math.uni.lodz.pl/ radmat radmat@math.uni.lodz."

Transkrypt

1 Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.pl

2 Konwersja i walidacja W wyniku działania konwersji i walidacji surowe dane, przesyłane w postaci żądania HTTP, przekształcane są na logiczne struktury danych występujące w Javie. Następnie sprawdzane są pod kątem poprawności. Dzięki temu możemy zapomnieć o wielu pojawiających się problemach, które ujawniają się w przypadku innych technologii webowych. JSF zadba za nas niemal o wszystko. Procesy konwertowania i walidacji stanowią istotną część drugiej i trzeciej fazy cyklu życia aplikacji JSF. Po wykonaniu pierwszego kroku JSF wie, czy żądanie przesłane przez użytkownika zostało zrealizowane po raz pierwszy w obrębie danej sesji (tzw. initial view), czy też użytkownik korzysta z danego widoku po raz kolejny (tzw. postback). Oczywiście w pierwszym przypadku konwertowanie i walidacja nie występują, ponieważ użytkownik nie miał możliwości przesłania żadnych danych, które podlegałyby konwersji i walidacji.

3 Konwertowanie standardowych wartości jest procesem w dużym stopniu zautomatyzowanym. Wszystkie prymitywne typy danych, takie jak int, double, itp. mogą być bez problemu konwertowane do typu String i odwrotnie. Dzięki temu wartość typu double zapisana np. w polu tekstowym zostanie wyświetlona poprawnie, natomiast po zmianie tej wartości przez użytkownika, Java spróbuje dokonać konwersji łańcucha znaków na liczbę. Jeśli operacja ta przebiegnie poprawnie, to wartość pola zostanie przekazana dalej do walidacji. Problemy zaczynają się, gdy istnieje potrzeba skorzystania z klasy, która nie może być automatycznie konwertowana na typ String. W tej sytuacji konieczne staje się napisanie własnego konwertera.

4 Konwertery standardowe W zdecydowanej większości typowych przypadków konwersja realizowana jest za pomocą standardowych konwerterów. Programiści firmy Sun udostępnili standardowe konwertety dla wartości typów prymitywnych: 1 Liczb całkowitych IntegerConverter LongConverter ShortConverter ByteConverter 2 Liczb zmiennoprzecinkowych DoubleConverter FloatConverter 3 Znaków CharacterConverter 4 Wartości logicznych BooleanConverter

5 Oprócz wymienionych powyżej konwerterów typów prymitywnych otrzymujemy dwa dodatkowe: BigIntegerConverter - dzięki któremu można wykonywać operacje na liczbach całkowitych o dowolnej długości BigDecimalConverter - dzięki któremu można wykonywać operacje na liczbach zmiennoprzecinkowych o dowolnej długości

6 NumberConverter - rozbudowany konwerter liczb Nie w każdym przypadku konwersji liczb wystarczą nam powyższe konwertery. Trochę więcej możliowści konwersji daje klasa NumberConverter. <h:inputtext id="info" value="#{ziarno.kwota}"> <f:convertnumber type="currency" /> </h:inputtext>

7 Najważniejsze atrybuty: minfractiondigits - minimalna liczba cyfr umieszczonych po przecinku maxfractiondigits - maksymalna liczba cyfr umieszczonych po przecinku minintegerdigits - minimalna liczba cyfr części ułamkowej maxintegerdigits - maksymalna liczba cyfr części ułamkowej integeronly - określa, czy powinna być zwracana jedynie część całkowita liczby type - określa typ konwertowanej liczby. Dozwolonymi wartościami są: percent (procent), currency (kwota pieniężna), number (liczba) pattern - określa wzorzec, jaki musi spełniać konwertowany łańcuch znaków. Wzorzec ten musi spełniać reguły określone w java.text.decimalformat.

8 Zauważmy, że w zależności od przekazanej wartości i ustawień niektórych atrybutów, konwerter może zwrócić obiekt typu Long lub Double. Oba typy dziedziczą po klasie Number, dlatego to właśnie atrybuty tej klasy powinny być deklarowane w klasie ziaren zarządzanych.

9 DataTimeConverter - konwerter daty i czasu Data i czas - analogicznie jak w przypadku wcześniejszych technologii - reprezentowane są w JSF przez klasę java.util.date. W przeciwieństwie do pozostałych klas konwerterów standardowych, konwerter DataTimeConverter nie zawsze zadziała zgodnie z naszymi oczekiwaniami! Związane jest to z możliwością różnego zapisu daty i czasu. Niezbędne okazuje się wówczas jawne określenie konwertera, opcjonalnie z dodatkowymi argumentami. Można to uczynić w następujący sposób: <h:inputtext id="info" value="#{ziarno.czas}"> <f:convertdatatime type="time" /> </h:inputtext>

10 Ten prosty zapis pozwala na uzyskanie oczekiwanego przez nas efektu. Oczywiście kontrola nad konwertowaniem daty i czasu może być bardziej wyrafinowana, dzięki zastosowaniu atrybutów: type - określa składowe, jakie mogą wystąpić w obrębie zmiennej typu Date. Dozwolonymi wartościami są date, time i both. datastyle - określa jeden z predefiniowanych formatów daty, jaki może przyjąć zmienna. Dozwolonymi wartościami są default, short, medium, long, full. timestyle - określa jeden z predefiniowanych formatów czasu, jaki może przyjąć zmienna. Dozwolone wartości są takie same, jak w przypadku datastyle. pattern - określa dowolny schemat daty i czasu, zgodny ze specyfikacją akceptowaną przez klasę java.text.simpledataformat. Np. wzorcowi h:mm odpowiadają m.in. 02:18, 09:30, czy 18:00.

11 EnumConverter - konwerter typu wyliczeniowego Typy wyliczeniowe rzadko występują w aplikacjach webowych. Twórcy takich aplikacji często bowiem zamiast tradycyjnego typu wyliczeniowego stosują zwykłe łańcuchy znaków. Zauważmy bowiem, że typy wyliczeniowe są de facto łańcuchami znaków. W związku z tym konwerter typu wyliczeniowego EnumCoverter nie sprawia tylu kłopotów, ile konwerter daty i czasu. Koniecznie trzeba zwrócić uwagę w jaki sposób należy wprowadzać wartości tekstowe, aby te zostały dopasowane do typu wyliczeniowego. Oczywiście należy wprowadzać je dokładnie, trzeba zachować wielkości znaków i nie stosować białych znaków. Za bezpośrednią operację konwersji tekstu do typu wyliczeniowego odpowiedzielna jest metoda Enum.ValueOf().

12 Przykład konwertera Wbrew pozorom napisanie własnego konwertera nie jest skomplikowane. Musimy jedynie obsłużyć dwie kluczowe operacje, czyli konwersję wprowadzonego do aplikacji typu do łańcucha znaków oraz operację odwrotną. Po utworzeniu klasy musimy jedynie dodać odpowiednie wpisy w pliku faces-config.xml. Klasa konwertera musi implementować interfejs javax.faces.convert.converter. Dzięki temu interfejsowi można zapomnieć o interakcji z JSF. Można zaimplementować następujące metody: Object getasobject(facescontext kontekst, UIComponent komponent, String wartość) - metoda ta zwraca obiekt przekonwertowany z podanej wartości tekstowej. Komponent określa skąd została pobrana wartość. String getasstring(facescontext kontekst, UIComponent komponent, Object wartosc) - metoda ta zwraca łańcuch znaków, utworzony na podstawie przekazanego obiektu.

13 Walidator Wszystkie walidatory muszą implementować interfejs javax.faces.validator.validator. W tej klasie implementuje się jedną metodę public void validate (FacesContext kontekst, UIComponent komponent, Object wartość), która poddaje walidacji przekazaną wartość uzyskaną z danego komponentu, w aplikacji o podanym kontekście. W przypadku błędu, metoda powinna wyrzucić wyjątek ValidatorException.

14 Walidacja liczb Walidatory DoubleRangeValidator i LongRangeValidator odpowiadają za walidację liczb, które mieszczą się w zakresie podanym w atrybutach minimum i maximum. <h:inputtext id="wiek" value="#{osoba.wiek}"> <f:validatelongrange minimum="1" maximum="110" /> </h:inputtext>

15 Walidacja łańcuchów znaków Za walidację łańcuchów znaków odpowiada klasa LengthValidator. Udostępnia - podobnie jak walidatory liczb - atrybuty minimum i maximum, które określają minimalną i maksymalną długość łańcucha znaków, który podlega walidacji: <h:inputtext id="imie" value="#{osoba.imie}"> <f:validatelength minimum="3" maximum="15" /> </h:inputtext>

16 Jeden z podstawowych mechanizmów walidacji może polegać na sprawdzaniu, czy wartość danego pola została wypełniona. JSF daje taką możliwość, ale nie za pomocą osobnego walidatora. Wystarczy bowiem skorzystać z atrybutów required i requiredmessage komponentów wejścia. Pierwszy z nich określa, czy wprowadzenie wartości w danym polu jest obowiązkowe. Drugi natomiast zawiera informację, która zostanie wyświetlona w przypadku, gdy pole nie zostanie wypełnione: <h:inputtext id="imie" value="#{osoba.imie}" required="true" requiredmessage="nie podano imienia." />

17 Przykład konwertera i walidatora Napiszemy teraz klasę, której zadanie będzie polegało na konwertowaniu oddzielonych spacjami liczb (wprowadzanymi z pól tekstowych) do listy liczb całkowitych i odwrotnie. Taki konwerter wykorzystamy do obliczania sumy dowolnej ilość liczb.

18 Klasa Kalkulator.java public class Kalkulator { private int liczba1; private int liczba2; private int suma; private ListaLiczb liczby; public int getliczba1() { return liczba1; } public void setliczba1(int liczba1) { this.liczba1=liczba1; }

19 public int getliczba2() { return liczba2; } public void setliczba2(int liczba2) { this.liczba2=liczba2; } public int getsuma() { return suma; } public String oblicz() { this.suma=this.getliczba1()+this.getliczba2(); return null; }

20 public ListaLiczb getliczby() { return liczby; } public void setliczby(listaliczb liczby) { this.liczby=liczby; } } public String obliczmulti() { this.suma=this.getliczby().getsuma(); return null; }

21 Klasa ListaLiczb.java import java.util.list; public class ListaLiczb { private List<Integer> lista; public List<Integer> getlista() { return lista; } public void setlista(list<integer> lista) { this.lista=lista; }

22 } public int getsuma() { if(lista==null) return 0; int suma=0; for(integer i:this.lista) suma+=i; return suma; }

23 Klasa KonwerterLiczbJava import java.util.arraylist; import java.util.list; import javax.faces.application.facesmessage; import javax.faces.component.uicomponent; import javax.faces.context.facescontext; import javax.faces.convert.converterexception;

24 public class KonwerterLiczb implements javax.faces.convert.converter { public String getasstring(facescontext kontekst, UIComponent komponent, Object wartosc) { if(!(wartosc instanceof ListaLiczb)) throw new ConverterException (new FacesMessage("Blad konwersji.")); } List<Integer> lista =((ListaLiczb)wartosc).getLista(); String wynik=""; for(integer i:lista) wynik+=(i+" "); return wynik;

25 public Object getasobject(facescontext kontekst, UIComponent komponent, String wartosc) { String[] liczby=wartosc.split(" "); List<Integer> lista=new ArrayList<Integer>(); for(string s:liczby) { try { Integer i=integer.valueof(s); lista.add(i); } catch(numberformatexception nfe) { throw new ConverterException (new FacesMessage("Blad konwersji.")); } }

26 } } ListaLiczb ll=new ListaLiczb(); ll.setlista(lista); return ll;

27 Plik index.xhtml <?xml version= 1.0 encoding= UTF-8?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=" xmlns:h=" <h:head> <title>kalkulator</title> </h:head>

28 <h:body> <h:form id="formularz"> <h:outputlabel for="formularz:liczba1"> Liczba 1:</h:outputLabel> <h:inputtext id="liczba1" value="#{kalkulator.liczba1}" required="true" requiredmessage="podaj 1 liczbe" /> <br />

29 <h:outputlabel for="formularz:liczba2"> Liczba 2:</h:outputLabel> <h:inputtext id="liczba2" value="#{kalkulator.liczba2}" required="true" requiredmessage="podaj 2 liczbe" /> <br /> <h:outputlabel for="formularz:liczby"> Liczby:</h:outputLabel> <h:inputtext id="liczby" value="#{kalkulator.liczby}" required="true" requiredmessage="podaj liczby" /> <br />

30 <h:commandbutton value="oblicz" action="#{kalkulator.oblicz}" /> <h:commandbutton value="oblicz sumę" action="#{kalkulator.obliczmulti}" /> <br /> <h:outputtext value="suma: #{kalkulator.suma}" /> </h:form> </h:body> </html>

31 Plik index.xhtml z własnym walidatorem <h:outputlabel for="formularz:liczba1"> Liczba 1:</h:outputLabel> <h:inputtext id="liczba1" value="#{kalkulator.liczba1}" /> <br /> <h:outputlabel for="formularz:liczba2"> Liczba 2:</h:outputLabel> <h:inputtext id="liczba2" value="#{kalkulator.liczba2}" /> <br /> <h:outputlabel for="formularz:liczby"> Liczby:</h:outputLabel>

32 <h:inputtext id="liczby" value="#{kalkulator.liczby}" > <f:validator id="walidator" validatorid="walidatorliczb"> /> </h:inputtext> <br /> <h:commandbutton value="oblicz" action="#{kalkulator.oblicz}" /> <h:commandbutton value="oblicz sumę" action="#{kalkulator.obliczmulti}" /> <br /> <h:outputtext value="suma: #{kalkulator.suma}" /> </h:form> </h:body> </html>

33 <faces-config xmlns=" xmlns:xsi=" xsi:schemalocation=" version="2.1"> <managed-bean> <managed-bean-name>kalkulator</managed-bean-name> <managed-bean-class> pl.helion.jeeweb.fazyaplikacjijsf.kalkulator </managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean>

34 <converter> <converter-for-class> pl.helion.jeeweb.fazyaplikacjijsf.listaliczb </converter-for-class> <converter-class> pl.helion.jeeweb.fazyaplikacjijsf.konwerterlicz </converter-class> </converter> </faces-config>

35 JPA W przypadku wielu aplikacji internetowych źródłem danych jest baza danych, działająca w obrębie wybranego serwera bazodanowego, który najczęściej funkcjonuje w architekturze klient-serwer. Z reguły dostęp do bazy danych odbywa się za pomocą języka zapytań SQL, dzięki któremu możliwe jest tworzenie baz danych i wszystkich elementów wchodzących w jej skład, czyli tabel, widoków, itp., a także oczywiście wypełnianie bazy danymi. Język SQL (w przeciwieństwie do języków programowania takich jak np. C++, czy Java) występuje w różnych odmianach, w zależności od serwera bazodanowego, w którym został zaimplementowany. Można m.in. wyróżnić następujące języki, wywodzące się od standardu SQL: T-SQL (Microsoft SQL Server) PL/SQL (Oracle) PL/pgSQL (PostreSQL) MySQL

36 Różnice te sprawiają, że tworzenie aplikacji z wykorzystaniem jednego standardu języka SQL trzeba pisać z myślą o konkretnej implementacji języka SQL. Problem ten został dostrzeżony przez programistów Javy. Jego rozwiązanie polega na wykorzystaniu technologii JDBC - Java DataBase Connectivity. Technologia ta pełni funkcję interfejsu między aplikacjami tworzonymi w języku Java, a konkretnymi implementacjami baz danych SQL. Dzięki zastosowaniu JDBC można tworzyć aplikacje używając jednolitego zestawu klas, niezależnie od zastosowanej implementacji. Szczegóły połączenia z bazą danych mogą być przechowywane w jednym miejscu aplikacji, dzięki czemu ewentualne zmiany ustawień nie stanowią problemu.

37 Mimo ustandaryzowania sposobu połączenia i komunikacji z bazą danych, zapytania SQL nadal pozostawały zależne od konkretnej bazy danych. W przypadku rozbudowanych aplikacji webowych bardzo kłopotliwe było wprowadzanie zmian do klas korzystających z baz danych. Natomiast sam kod był bardzo nieprzejrzysty.

38 ORM ORM (Object-Relational Mapping) - mapowanie obiektowo-relacyjne. Zadaniem tego mechanizmu jest odwzorowywanie obiektów istniejących w obrębie języków programowania i powiązań między tymi obiektami na relacje istniejące w relacyjnych bazach danych. Zasadę działania mechanizmu ORM można podzielić na etapy: 1 Przygotowania - polegają na zestawieniu połączenia z bazą danych oraz utworzeniu odwzorowań pomiędzy obiektami, a relacjami występującymi w bazie danych. 2 Właściwe operacje - na tym etapie wykonujemy żądane operacje w języku SQL na danych.

39 Hibernate Hibernate jest najpopularniejszą implementacją odwzorowania ORM dla języka Java. Założeniem jego twórców było zaoferowanie rozwiązania określanego po angielsku jako Relational Persistence For Idiomatic Java, co oznacza zapewnienie trwałości obiektów ze wsparciem dla wszystkich mechanizmów obiektowych języka Java, takich jak obsługa asocjacji, kompozycji, dziedziczenia, polimorfizmu i kolekcji. Hibernate cechuje wysoka wydajność i skalowalność oraz wiele możliwości wydawania zapytań do bazy danych. Jest rozwiązaniem kategorii professional open source. Z jednej strony jego źródła są dostępne, a z drugiej jest on rozwijany przez firmę JBoss Inc., będącą znaczącym graczem na rynku serwerów aplikacj.

40 Architektura Hibernate: Rysunek: Architektura Hibernate

41 Stany obiektu w Hibernate 1 Ulotny (ang. transient) utworzony operatorem new, ale niezwiązany z sesją 2 Trwały (ang. persistent) posiada identyfikator i reprezentację w bazie danych związany z sesją 3 Odłączony (ang. detached) obiekt, który był trwały, ale jego sesja się zakończyła można go modyfikować, a następnie związać z nową sesją

42 Obsługa trwałości obiektów w aplikacjach opartych o Hibernate polega głównie na wywoływaniu odpowiednich metod na rzecz obiektu Session. Do uczynienia obiektu trwałym służy metoda save() obiektu Session. Odczyt obiektu o znanym identyfikatorze umożliwiają bardzo podobne do siebie metody load() i get() obiektu Session, natomiast do usuwania reprezentacji obiektu z bazy danych służy metoda delete() obiektu Session.

43 Klasy trwałe public class Osoba { private Long ID; private String nazwisko; public void setid(long ID) { this.id=id; } public Long getid() { return ID; } public void setnazwisko(string nazwisko) { this.nazwisko=nazwisko; } public String getnazwisko() { return nazwisko; } }

44 Trwałe klasy to klasy implementujące encje występujące w modelu danych aplikacji. Nie wszystkie instancje trwałej klasy muszą być trwałe. Hibernate najlepiej działa z klasami spełniającymi reguły POJO - Plain Old Java Object. Klasy POJO dla Hibernate muszą posiadać metody set / get dla trwałych pól i bezargumentowy konstruktor. Zalecane jest, aby klasa posiadała wyróżniony identyfikator (najlepiej sztuczny) w formie dodatkowego pola w klasie, typu nieprostego.

45 Odwzorowanie obiektowo-relacyjne w Hibernate jest definiowane w pliku lub plikach XML. Typowo odwzorowanie dla każdej trwałej klasy opisane jest w odrębnym pliku z rozszerzeniem.hbm.xml. Język do opisu odwzorowania jest zorientowany na opis odwzorowania z punktu widzenia klasy Java, a nie tabeli. Dokumenty opisujące odwzorowanie można tworzyć ręcznie lub korzystając z narzędzi. Istnieją generatory tworzące plik odwzorowania na podstawie klasy POJO, a także generujące klasy POJO i pliki odwzorowania dla istniejących tabel w bazie danych. Dokumenty opisujące odwzorowanie wskazywane są w pliku konfiguracyjnym hibernate.cfg.xml, ale mogą też być wskazane programowo w aplikacji.

46 Praca z obiektami Utworzenie i zachowanie obiektu Osoba o=new Osoba(); o.setnazwisko("kowalski"); Long ID=(Long)session.save(o); Odczyt i modyfikacja obiektu Osoba o=osoba()session.load(osoba.class, new Long(20)) o.setnazwisko("kowalski"); Usuwanie obiektu Osoba o=osoba()session.load(osoba.class, new Long(20)) session.delete(o);

47 Przykład asocjacji Załóżmy, że mamy dwie klasy trwałe: Wydział i Osoba, będące w relacji 1:N. Plik Osoba.java public class Osoba { private Long id; private String nazwisko; private Wydział w; } Plik Osoba.hbm.xml <class name="osoba" table="osoba">... <many-to-one name="w" column="osoba_id" not-null="true" /> </class>

48 Plik Wydział.java public class Wydział { private Long id; private String nazwa; private Set os; } Plik Wydział.hbm.xml <class name="wydział" table="wydział">... <set name="os"> <key column="osoba_id" /> <one-to-many class="wydział" /> </set> </class>

49 Język zapytań HQL Zapytania w HQL (Hibernate Query Language) mają następujące cechy: składnia podobna do języka SQL zorientowany obiektowo zapytania odwołują się do klas, a nie do tabel FROM osoba AS o WHERE o.nazwisko LIKE Kowalski ; Pełna składnia: List osoba=(list)session.createquery( "FROM osoba AS o WHERE o.nazwisko LIKE Kowalski ").list();

50 Java Persistance Java Persistence to nowy, opracowany razem z EJB 3.0 standard zapewniania trwałości obiektów w aplikacjach Java EE i Java SE, stanowiący część specyfikacji Java EE od wersji 5.0. Został on opracowany razem z EJB 3.0 w odpowiedzi na niepowodzenie lansowanej do tej pory koncepcji encyjnych EJB i niewątpliwy sukces technologii odwzorowania obiektowo-relacyjnego takich jak Hibernate czy Oracle Toplink. Technologie te, mimo że oparte o te same idee, różnią się jeśli chodzi o API. Standard Java Persistence jest oparty o odwzorowanie obiektowo-relacyjne i definiuje standardowe API do obsługi trwałości obiektów.

51 Elementy standardu Java Persistence to: Interfejs programistyczny Java Persistence API, obejmujący interfejs do zarządcy trwałości EntityManager; Język zapytań Java Persistence Query Language (JPQL), o składni przypominającej SQL, umożliwiający tworzenie przenaszalnych zapytań; Metadane o odwzorowaniu obiektowo-relacyjnym, najczęściej umieszczone w kodzie w formie adnotacji, z możliwością dodatkowej konfiguracji w środowisku produkcyjnym poprzez XML-owe pliki konfiguracyjne.

52 public class Blad implements Serializable private Long id; private String opis; public Blad() {}; public Long getid() {return id;} public void setid (Long id) {this.id=id;} public String getopis() {return opis;} public void setopis (String opis) { this.opis=opis; } }

53 Zapytania do bazy danych 1 Rodzaje zapytań (metody obiektu EntityManager): dynamiczne w JPQL - createquery() dynamiczne natywne - createnativequery() zapewniają lepszą optymalizację nazwane (JPQL lub natywne) - createnamedquery() 2 Wykonanie zapytania (metody obiektu Query): getresultlist() - zwraca wyniki zapytania jako kolekcję typu List getsingleresult() - służy do odczytu pojedynczego wyniku zapytania w postaci obiektu Object executeupdate() - służy do wykonania polecenia UPDATE lub DELETE

54 Zapytanie dynamiczne EntityManager em;... List<Blad> wynik=null; Query q=em.createquery("select b FROM Blad WHERE b.opis LIKE %problem % "); wynik=q.getresultlist();

55 Zapytanie nazwane query= "SELECT b FROM Blad b WHERE b.opis LIKE:klucz")... EntityManager em;... <List> Blad wynik=null; wynik=em.createnamequery("szukaj").setparameter( "klucz","%krytyczny%").getresultlist();

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate Wirtualne przedsiębiorstwo II Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate Łukasz Macierzyński 157588 Daniel Nikończuk 157621 Kacper Oko 157626 Agenda 1. Co to jest mapowanie obiektowo-relacyjne

Bardziej szczegółowo

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA Bazy danych tworzenie aplikacji bazodanowych ORM / JPA ORM (Object Relationa Mapping)/ORB (Object Relational Broker) to nazwa mechanizmu tłumaczenia obiektowej postaci danych wykorzystywanej w aplikacjach

Bardziej szczegółowo

Programowanie wielowarstwowe i komponentowe

Programowanie wielowarstwowe i komponentowe Programowanie wielowarstwowe i komponentowe HIBERNATE CD. Rodzaje relacji Jeden do wielu Pojedyncza Osoba ma wiele Wpisów Wiele do jednego Wiele Wpisów należy do jednej Osoby Jeden do jednego Pojedyncza

Bardziej szczegółowo

Dostęp do baz danych w aplikacjach Java EE

Dostęp do baz danych w aplikacjach Java EE Dostęp do baz danych w aplikacjach Java EE Wykład prowadzi: Marek Wojciechowski JDBC SQLJ Plan wykładu Biblioteka znaczników JSTL SQL EJB (do wersji 2.1) Odwzorowanie obiektowo-relacyjne (O/RM) Java Persistence

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 13 Marcin Młotkowski 27 maja 2015 Plan wykładu Trwałość obiektów 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 2 / 29 Trwałość (persistence) Definicja Cecha

Bardziej szczegółowo

Java Server Faces narzędzie do implementacji w wy prezentacji

Java Server Faces narzędzie do implementacji w wy prezentacji Java Server Faces narzędzie do implementacji w wy prezentacji pojęcie komponentu powiązanie z modelem danych widok (View) jako drzewo komponentów obiekty pomocnicze: konwertery, walidatory, obsługa zdarzeń

Bardziej szczegółowo

Metody dostępu do danych

Metody dostępu do danych Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie materiałów dra inż. Juliusza Mikody Jak działa JDO Podstawowym zadaniem JDO jest umożliwienie aplikacjom Javy transparentnego umieszczenia

Bardziej szczegółowo

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 Utrwalanie danych zastosowanie obiektowego modelu danych warstwy biznesowej do generowania schematu relacyjnej bazy danych Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 1. Relacyjne

Bardziej szczegółowo

Konwersja danych. Programowanie komponentowe 4. wg http://docs.oracle.com/javaee/6/tutorial/doc/ bnaph.html

Konwersja danych. Programowanie komponentowe 4. wg http://docs.oracle.com/javaee/6/tutorial/doc/ bnaph.html Konwersja danych wg http://docs.oracle.com/javaee/6/tutorial/doc/ bnaph.html Programowanie komponentowe 4 Znaczniki typu f: 1. Podstawowe znaczniki JSF Znaczniki do obsługi zdarzeń f:actionlistener f:phaselistener

Bardziej szczegółowo

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz Budowa prostej aplikacji wielowarstwowej Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz Konfigurowanie edytora programu za pomocą Tools/Options/Editor Konfigurowanie edytora programu za pomocą

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Serwery aplikacji. dr Radosław Matusik. radmat

Serwery aplikacji. dr Radosław Matusik.   radmat www.math.uni.lodz.pl/ radmat EL - Expression Language Załóżmy, że mamy klasę Pracownik, której atrybutem jest PESEL. Załóżmy dalej, że w atrybucie sesji zalogowany przechowujemy obiekt aktualnie zalogowanego

Bardziej szczegółowo

Tworzenie aplikacji dla Oracle Application Server 10g R3 w technologii EJB 3.0

Tworzenie aplikacji dla Oracle Application Server 10g R3 w technologii EJB 3.0 Tworzenie aplikacji dla Oracle Application Server 10g R3 w technologii EJB 3.0 Marek Wojciechowski Politechnika Poznańska, PLOUG e mail: Marek.Wojciechowski@cs.put.poznan.pl Abstrakt. Jedną z nowych cech

Bardziej szczegółowo

Podejście obiektowe do relacyjnych baz danych Hibernate.

Podejście obiektowe do relacyjnych baz danych Hibernate. Podejście obiektowe do relacyjnych baz danych Hibernate. Plan wykładu Czym jest Hibernate? Jakie są zalety pracy z Hibernate? Jak skonfigurować Hibernate? Jak korzystać z Hibernate? Praktyczne przykłady

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 13 Marcin Młotkowski 24 maja 2018 Plan wykładu 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 509 / 553 Plan wykładu Trwałość obiektów 1 Trwałość obiektów

Bardziej szczegółowo

Metody dostępu do danych

Metody dostępu do danych Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie wykładów dra inż. Juliusza Mikody Obiekt interfejsu Session Jest to podstawowy interfejs komunikacji pomiędzy aplikacją, a API Hibernate

Bardziej szczegółowo

1 Wprowadzenie do J2EE

1 Wprowadzenie do J2EE Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2

Bardziej szczegółowo

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

NHibernate Hibernate dla platformy.net. Hibernate posiada także dużą społeczność, zatem nietrudno uzyskać jakieś wsparcie w przypadku problemów. Hibernate Każda poważniejsza aplikacja wymaga przechowywania danych w jakiejś bazie danych. Można realizować to na wiele sposobów. Można obsługę bazy danych pisać samodzielnie, do zera, albo skorzystać

Bardziej szczegółowo

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

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

ODWZOROWANIE OBIEKTOWO-RELACYJNE

ODWZOROWANIE OBIEKTOWO-RELACYJNE PODSTAWY BAZ DANYCH Mateusz Wojtaszek Agnieszka Walczak Kamil Lisiecki ODWZOROWANIE OBIEKTOWO-RELACYJNE Co to jest ORM? ORM to skrótowe oznaczenie dla "mapowanie obiektowo-relacyjne" (od angielskiego Object-Relational

Bardziej szczegółowo

Hibernate. Adrian Gawor, Adam Klekotka, Piotr Kubisz. Technologie Biznesu Elektronicznego. 12 maja 2009

Hibernate. Adrian Gawor, Adam Klekotka, Piotr Kubisz. Technologie Biznesu Elektronicznego. 12 maja 2009 Agenda Hibernate Adrian Gawor, Adam Klekotka, Piotr Kubisz Technologie Biznesu Elektronicznego 12 maja 2009 Adrian Gawor, Adam Klekotka, Piotr Kubisz Hibernate 1 / 42 Agenda 1 2 3 4 5 6 7 Adrian Gawor,

Bardziej szczegółowo

Programowanie w języku Java WYKŁAD

Programowanie w języku Java WYKŁAD Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 28.04.2014 WYKŁAD 9 Trwałość w Java cz. 2 wykład

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium

Bardziej szczegółowo

Wzorce logiki dziedziny

Wzorce logiki dziedziny Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -

Bardziej szczegółowo

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle EFEKTY KSZTAŁCENIA Wiedza Absolwent tej specjalności

Bardziej szczegółowo

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008 JDBC w LoXiMie Interfejs Java Database Connectivity dla systemu LoXiM Adam Michalik 2008 Sterownik JDBC co to jest? Sterownik JDBC to zbiór klas implementujących interfejsy opisane w specyfikacji JDBC

Bardziej szczegółowo

Enterprise JavaBeans

Enterprise JavaBeans Enterprise JavaBeans 1. Wprowadzenie. 2. Przegląd komponentów EJB. komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 3. Kontener komponentów EJB: JBoss. 1 Enterprise JavaBeans

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie Programowanie MSQL show databases; - pokazanie jakie bazy danych są dostępne na koncie show databases; - wyświetlenie wszystkich baz danych na serwerze create database nazwa; - za nazwa wstawiamy wybraną

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do

Bardziej szczegółowo

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych Projektowanie bazy danych Jarosław Kuchta Projektowanie Aplikacji Internetowych Możliwości projektowe Relacyjna baza danych Obiektowa baza danych Relacyjno-obiektowa baza danych Inne rozwiązanie (np. XML)

Bardziej szczegółowo

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2 Kod szkolenia: Tytuł szkolenia: EJB Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2 Dni: 3 Opis: Adresaci szkolenia: Szkolenie adresowane jest

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

EJB 3.0 (Enterprise JavaBeans 3.0)

EJB 3.0 (Enterprise JavaBeans 3.0) EJB 3.0 (Enterprise JavaBeans 3.0) Adrian Dudek Wirtualne Przedsiębiorstwo 2 Wrocław, 1 czerwca 2010 Plan prezentacji 1 Wprowadzenie Cel prezentacji Czym jest EJB 3.0? Historia 2 3 Cel prezentacji Wprowadzenie

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

Wprowadzenie do Doctrine ORM

Wprowadzenie do Doctrine ORM Wprowadzenie do Doctrine ORM Przygotowanie środowiska Do wykonania ćwiczenia konieczne będzie zainstalowanie narzędzia Composer i odpowiednie skonfigurowanie Netbeans (Tools->Options->Framework & Tools->Composer,

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

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

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz Budowa aplikacji wielowarstwowych zastosowanie szablonów Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz Przykład 1 Zastosowanie szablonów Tworzenie kopii projektu typu Web Application o nazwie

Bardziej szczegółowo

NHibernate. Narzędzie mapowania obiektowo - relacyjnego

NHibernate. Narzędzie mapowania obiektowo - relacyjnego NHibernate Narzędzie mapowania obiektowo - relacyjnego Autor : Maciej Białorucki Mapowanie obiektowo-relacyjne Mapowanie obiektowo - relacyjne Object Relation Mapping Dwa światy Dlaczego nie stosować baz

Bardziej szczegółowo

Programowanie komponentowe 5

Programowanie komponentowe 5 Budowa warstwy klienta w architekturze typu klient-serwer zbudowanych z komponentów typu EE - klient desktopowy i internetowy. Zastosowanie komponentów opartych na technologii EJB 3.2. na podstawie https://docs.oracle.com/javaee/7/jeett.pdf

Bardziej szczegółowo

15. Funkcje i procedury składowane PL/SQL

15. Funkcje i procedury składowane PL/SQL 15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp

Bardziej szczegółowo

Odwzorowanie obiektowo-relacyjne

Odwzorowanie obiektowo-relacyjne Odwzorowanie obiektowo-relacyjne Wykład prowadzi: Marek Wojciechowski Odwzorowanie obiektowo-relacyjne 1 Plan wykładu Odwzorowanie obiektowo-relacyjne (O/RM) Hibernate Java Persistence Odwzorowanie obiektowo-relacyjne

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Zaawansowane Techniki Bazodanowe

Zaawansowane Techniki Bazodanowe Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki Zaawansowane Techniki Bazodanowe Krzysztof Koptyra, Dawid Tomaszewski Raport

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016 Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016 Repository dodatkowa warstwa abstrakcji na obiektową warstwę dostępu do danych.

Bardziej szczegółowo

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

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

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Bazy danych 2. Wykład 1

Bazy danych 2. Wykład 1 Bazy danych 2 Wykład 1 Sprawy organizacyjne Materiały i listy zadań zamieszczane będą na stronie www.math.uni.opole.pl/~ajasi E-mail: standardowy ajasi@math.uni.opole.pl Sprawy organizacyjne Program wykładu

Bardziej szczegółowo

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

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence. Zaawansowane aplikacje internetowe Laboratorium Java Persistence. Adaptacja rozwiązania dla środowiska NetBeans 7.0.1: Łukasz Przytuła, opracowanie materiałów: Andrzej Dawidowicz Do wykonania ćwiczeń potrzebne

Bardziej szczegółowo

Podstawowe wykorzystanie Hibernate

Podstawowe wykorzystanie Hibernate Podstawowe wykorzystanie Hibernate Cel Wykonanie prostej aplikacji webowej przedstawiającą wykorzystanie biblioteki. Aplikacja sprawdza w zależności od wybranej metody dodaje, nową pozycje do bazy, zmienia

Bardziej szczegółowo

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

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Czym jest Spring Boot? Spring Boot jest szkieletem aplikacji, opiera się o Spring Framework czyli Framework szeroko

Bardziej szczegółowo

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

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska BEAN VALIDATION Waldemar Korłub Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska Bean Validation Uniwersalny mechanizm walidacji danych we wszystkich warstwach aplikacji Warstwa interfejsu,

Bardziej szczegółowo

EJB 2.x oraz zmiany w standardzie dla EJB 3.0. Michał Stanek

EJB 2.x oraz zmiany w standardzie dla EJB 3.0. Michał Stanek Enterprise JavaBean EJB 2.x oraz zmiany w standardzie dla EJB 3.0 Michał Stanek Plan prezentacji Czym jest EJB Architektura aplikacji J2EE oraz kontener EJB Typy komponentów JavaBean EJB 1.0, EJB 2.x Wady

Bardziej szczegółowo

Java. Michał Wójcik. michal.wojcik@eti.pg.gda.pl http://mwojcik.eti.pg.gda.pl

Java. Michał Wójcik. michal.wojcik@eti.pg.gda.pl http://mwojcik.eti.pg.gda.pl Java Michał Wójcik michal.wojcik@eti.pg.gda.pl http://mwojcik.eti.pg.gda.pl Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechnika Gdańska 5 kwietnia

Bardziej szczegółowo

JPA Java Persistance API

JPA Java Persistance API JPA Java Persistance API Java Persistence API (JPA) Specyfiacja ipisująca standardy mapiwania ibieitiwi-relacyjnegi (ORM ibject relatinal mapping) Przyiładiwe implementacje: Hibernate OpenJPA EclipseLini

Bardziej szczegółowo

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG Budowa aplikacji w technologii Enterprise JavaBeans Maciej Zakrzewicz PLOUG Plan prezentacji Przegląd architektur aplikacji rozproszonych: CORBA, SOAP, EJB Wprowadzenie do Enterprise JavaBeans (EJB) Budowa

Bardziej szczegółowo

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013 Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013 1 Automated code generation To bardziej technika wspomagająca niż wzorzec, ale wykorzystywana w praktyce

Bardziej szczegółowo

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Dotacje na innowacje. Inwestujemy w waszą przyszłość. PROJEKT TECHNICZNY Implementacja Systemu B2B w firmie Lancelot i w przedsiębiorstwach partnerskich Przygotowane dla: Przygotowane przez: Lancelot Marek Cieśla Grzegorz Witkowski Constant Improvement Szkolenia

Bardziej szczegółowo

Bazy danych - wykład wstępny

Bazy danych - wykład wstępny Bazy danych - wykład wstępny Wykład: baza danych, modele, hierarchiczny, sieciowy, relacyjny, obiektowy, schemat logiczny, tabela, kwerenda, SQL, rekord, krotka, pole, atrybut, klucz podstawowy, relacja,

Bardziej szczegółowo

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE) Programowanie w języku Java Wykład 13: Java Platform, Enterprise Edition (Java EE) Standard J2EE Programowanie w języku Java 2 J2EE - komunikacja Programowanie w języku Java 3 J2EE warstwa biznesowa Programowanie

Bardziej szczegółowo

Szkolenie wycofane z oferty

Szkolenie wycofane z oferty Szkolenie wycofane z oferty Program szkolenia: Java Server Faces 2 Informacje: Nazwa: Java Server Faces 2 Kod: Java-EE-JSF 2 Kategoria: Java EE Grupa docelowa: developerzy Czas trwania: 3 dni Forma: 50%

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2012 Plan wykładu Modele danych i bazy danych Modele danych Migracje Bazy danych w Railsach Rusztowania Walidacja modeli Modele danych Definicje

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Bardziej szczegółowo

SYSTEM MONITORINGU PARAMETRÓW WĘZŁÓW PRZECHOWYWANIA DANYCH DLA PROJEKTU KRAJOWY MAGAZYN DANYCH PODRĘCZNIK DEWELOPERA

SYSTEM MONITORINGU PARAMETRÓW WĘZŁÓW PRZECHOWYWANIA DANYCH DLA PROJEKTU KRAJOWY MAGAZYN DANYCH PODRĘCZNIK DEWELOPERA SYSTEM MONITORINGU PARAMETRÓW WĘZŁÓW PRZECHOWYWANIA DANYCH DLA PROJEKTU KRAJOWY MAGAZYN DANYCH PODRĘCZNIK DEWELOPERA 1 Spis treści: Wstęp... 3 Opis architektury systemu... 4 Architektura modułu KMD...

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

Technologie i usługi internetowe cz. 2 Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. Warstwa integracji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Ukrycie logiki dostępu do danych w osobnej warstwie 2. Oddzielenie mechanizmów trwałości od modelu obiektowego Pięciowarstwowy

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej JSP - Java Server Pages dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki 2019 Aplikacje i skrypty WWW klasyfikacja

Bardziej szczegółowo

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Ref. 7 - Język SQL - polecenia DDL i DML

Ref. 7 - Język SQL - polecenia DDL i DML Ref. 7 - Język SQL - polecenia DDL i DML Wprowadzenie do języka SQL. Polecenia generujące strukturę bazy danych: CREATE, ALTER i DROP. Polecenia: wprowadzające dane do bazy - INSERT, modyfikujące zawartość

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

PHP: bazy danych, SQL, AJAX i JSON

PHP: bazy danych, SQL, AJAX i JSON 1 PHP: bazy danych, SQL, AJAX i JSON SYSTEMY SIECIOWE Michał Simiński 2 Bazy danych Co to jest MySQL? Jak się połączyć z bazą danych MySQL? Podstawowe operacje na bazie danych Kilka dodatkowych operacji

Bardziej szczegółowo

EJB 3.0 & JBoss Seam. 25 kwietnia 2007 Jacek Gerbszt 1

EJB 3.0 & JBoss Seam. 25 kwietnia 2007 Jacek Gerbszt 1 EJB 3.0 & JBoss Seam 25 kwietnia 2007 Jacek Gerbszt 1 Wyzwania współczesnych aplikacji? Rozproszenie, zdalne wywołania Przetwarzanie transakcyjne Bezpieczeństwo Skalowalność Klastrowanie Łatwe wytwarzanie

Bardziej szczegółowo

Systemy baz danych. mgr inż. Sylwia Glińska

Systemy baz danych. mgr inż. Sylwia Glińska Systemy baz danych Wykład 1 mgr inż. Sylwia Glińska Baza danych Baza danych to uporządkowany zbiór danych z określonej dziedziny tematycznej, zorganizowany w sposób ułatwiający do nich dostęp. System zarządzania

Bardziej szczegółowo

Kurs programowania aplikacji bazodanowych

Kurs programowania aplikacji bazodanowych Wykład 5 Instytut Informatyki Uniwersytet Wrocławski Plan wykładu Wprowadzenie do XPO Podstawowe obiekty Utrwalanie obiektów Transakcje i współbieżność Wzorzec unit of work Odwzorowanie dziedziczenia Asocjacje

Bardziej szczegółowo

Technologie obiektowe

Technologie obiektowe WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność

Bardziej szczegółowo

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

Wprowadzenie do technologii JavaServer Faces 2.2 na podstawie   Wykład 2 Technologie internetowe Wprowadzenie do technologii JavaServer Faces 2.2 na podstawie https://docs.oracle.com/javaee/7/jeett.pdf Wykład 2 Technologie internetowe Technologie internetowe 2, Zofia Kruczkiewicz 1 Technologia JavaServer

Bardziej szczegółowo

JAX-RS czyli REST w Javie. Adam Kędziora

JAX-RS czyli REST w Javie. Adam Kędziora JAX-RS czyli REST w Javie Adam Kędziora Webservice Usługa sieciowa (ang. web service) komponent programowy niezależny od platformy i implementacji, dostarczający określonej funkcjonalności. SOAP,UDDI,XML,WSDL

Bardziej szczegółowo

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan

Bardziej szczegółowo

Projektowanie aplikacji z bazami danych

Projektowanie aplikacji z bazami danych Systemy mapowania relacyjno-obiektowego Instytut Informatyki Uniwersytet Wrocławski Plan wykładu Wprowadzenie do trwałości Niedopasowanie paradygmatów Architektura warstwowa Czym jest ORM? Problemy i pytania

Bardziej szczegółowo

Zasady generowania kluczy głównych Język Java Persistence Podstawowa architektura wielowarstwowych aplikacji w oparciu o wzorce oprogramowania

Zasady generowania kluczy głównych Język Java Persistence Podstawowa architektura wielowarstwowych aplikacji w oparciu o wzorce oprogramowania Zasady generowania kluczy głównych Język Java Persistence Podstawowa architektura wielowarstwowych aplikacji w oparciu o wzorce oprogramowania Autor Zofia Kruczkiewicz Wzorce oprogramowania 6 1. Różne

Bardziej szczegółowo

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Opis biznesowy świata rzeczywistego Wymagania funkcjonalne i niefunkcjonalne aplikacji Diagram przypadków życia Diagramy klas i sekwencji:

Bardziej szczegółowo

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych Plan prezentacji Budowa aplikacji w technologii Enterprise JavaBeans Przegląd architektur aplikacji rozproszonych: CORBA,, Wprowadzenie do Enterprise JavaBeans () Budowa komponentów sesyjnych Budowa komponentów

Bardziej szczegółowo

Enterprise JavaBeans 3.0

Enterprise JavaBeans 3.0 Enterprise JavaBeans 3.0 Jacek Laskowski http://www.jaceklaskowski.pl Politechnika Poznańska Poznań, 07.12.2007, wersja 1 O mnie... Entuzjasta technologii Java EE 5 Założyciel i lider Warszawa JUG Członek

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne Baza danych sql 1. Wprowadzenie Do tej pory operowaliście na listach. W tej instrukcji pokazane zostanie jak stworzyć bazę danych. W zadaniu skorzystamy z możliwości utworzenia struktury bazy danych z

Bardziej szczegółowo

Technologia informacyjna

Technologia informacyjna Technologia informacyjna Bazy danych Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2016 Plan wykładu Wstęp do baz danych Modele baz danych Relacyjne bazy danych Język SQL Rodzaje

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

Co nowego w Java EE?

Co nowego w Java EE? Co nowego w Java EE? Marek Wojciechowski Politechnika Poznańska e mail: Marek.Wojciechowski@cs.put.poznan.pl Abstrakt. Najnowsza wersja specyfikacji Java Platform Enterprise Edition wprowadza szereg istotnych

Bardziej szczegółowo

Gdzie jest moja tabela?

Gdzie jest moja tabela? Gdzie jest moja tabela? Czyli jak sobie radzić w Javie i SQL gdy zmienia się schemat bazy danych. Tomasz Skutnik 21 Listopada 2011 r UWIELBIAM piratów programować. Dziś koduję sklep internetowy. Jak rozmawiać

Bardziej szczegółowo