Przygotował: Jacek Sroka. Java Persistence API

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

Download "Przygotował: Jacek Sroka. Java Persistence API"

Transkrypt

1 Java Persistence API

2 Trwałość Serializacja o dane reprezentowane binarnie lub w XMLu o brak wyszukiwania o brak transakcji O/R mapping o zazwyczaj: klasa->tabela, obiekt->wiersz, atrybut->wartość w kolumnie oręcznie JDBC o automatycznie EclipseLink, Hibernate, Toplink, JDO można dostroić do istniejącej bazy Java Persistence API (JPA) o standard wyłapujący najlepsze pomysły z istniejących rozwiązań opojo o adnotacje (deskryptory mają większy priorytet)

3 Encje przykład Dostosowywanie public class private int id; private String imię; private char płeć; private String nazwisko; private String ulica; private int nrdomu; private String = = STATE, nullable = true, length = 255, unique = = GenerationType.AUTO) o SEQUENCE, TABLE, IDENTITY można adnotować atrybuty lub gettery

4 Encje: podstawowe informacje Encje to POJO zadnotowane javax.persistence.entity otych samych klas da się używać w całej aplikacji o encje mogą rozszerzać zarówno inne encje jak i zwykłe klasy o zwykłe klasy mogą rozszerzać encje Musi istnieć publiczny lub chroniony, bezargumentowy konstruktor Musi istnieć klucz główny javax.persistence.id o lub javax.persistence.embeddedid i javax.persistence.idclass otyp podstawowy, klasa opakowująca, java.lang.string, java.util.date (z drobnymi ograniczeniami), java.sql.date

5 Encje: podstawowe informacje c.d. Klasa, metody ani utrwalane atrybuty nie mogą być oznaczone jako final Utrwalane atr. powinny być private, protected lub domyślnej wid. pak. Encja może badać swój stan bezpośrednio dotykając atrybutów lub metodami get/set o z innych klas dostęp do atrybutów nie powinien być bezpośredni Atrybuty które mają nie być utrwalane w bazie danych należy zanotować javax.persistence.transient lub oznaczyć modyfikatorem transient

6 Typy atrybutów/właściwości typy podstawowe java.lang.string inne typy serializowalne, w tym: o klasa opakowująca o typy serializowalne zdefiniowane przez użytkownika o java.math.biginteger, java.math.bigdecimal ojava.util.date, java.util.calendar, java.sql.date, java.sql.time, java.sql.timestamp obyte[], Byte[], char[], Character[],... typy wyliczeniowe inne encje kolekcje encji otylko: Collection, Set, List, Map o ewentualnie odmiany generyczne klasy zanurzone (ang. embeddable classes)

7 Jak zacząć? Persistence o punkt wejściowy o czyta persistence.xml z META-INF Persistence Unit o ma nazwę i opisuje połączenie z bazą o zdefiniowane w persistence.xml o może wymieniać encje, które nadzoruje/nie nadzoruje EntityManagerFactory o reprezentuje Persistence Unit Persistence Context o zbiór encji, których utrwalanie nadzoruje Persistence Provider o w jego ramach encje mają unikatową tożsamość i reprezentują trwałe dane o kończy się razem z transakcją, chyba że typu extended EntityManager o metody pozwalające nadzorować trwałość o cache pierwszego poziomu o nie wielowątkowy

8 persistence.xml <?xml version="1.0" encoding="utf-8"?> <persistence version="1.0" xmlns=" xmlns:xsi=" xsi:schemalocation=" <persistence-unit name="pu1" transaction-type="resource_local"> <provider>oracle.toplink.essentials.persistenceprovider</provider> <class>start.osoba</class> <properties> <property name="toplink.jdbc.user" value="test"/> <property name="toplink.jdbc.password" value="test"/> <property name="toplink.jdbc.url" value="jdbc:derby://localhost:1527/test"/> <property name="toplink.jdbc.driver" value="org.apache.derby.jdbc.clientdriver"/> <property name="toplink.ddl-generation" value="drop-and-create-tables"/> </properties> </persistence-unit> </persistence>

9 Pierwszy przykład EntityManagerFactory emf = Persistence.createEntityManagerFactory("pu1"); EntityManager em = emf.createentitymanager(); Osoba o1 = new Osoba("Ala", 'K', "Trelemorele", 1, "Gdańsk"); Osoba o2 = new Osoba("Ola", 'K', "Trelemorele", 2, "Kraków"); em.gettransaction().begin(); em.persist(o1); em.persist(o2); em.gettransaction().commit(); List<Osoba> list = em.createquery("select o from Osoba o").getresultlist(); for (Osoba akt : list) { System.out.println(akt.getImię()); em.close();

10 Zapytania - podstawy em.createquery(""); em.createquery("select t from Trelemorele t"); em.createquery("select o from Osoba o").getresultlist(); em.createquery("select o from Osoba o").getsingleresult(); em.find(osoba.class, osobaid); o jak złe id to null em.createquery("select o from Osoba o where o.imię =?1").setParameter(1, "Ala").getResultList(); ouwaga na SQL Injection! Osoba opoid = em.find(osoba.class, idali); Osoba opowhere = (Osoba) em.createquery("select o from Osoba o where o.imię='ala'").getsingleresult(); o opoid == opowhere

11 Wydzielamy public class Adres { private String ulica; private int nrdomu; private String miasto;... obiekty zanurzalne nie mają tożsamości nie będzie nowej tabeli z adresami struktura tabeli z osobą się nie public class private int id; private String imię; private char private Adres adres;...

12 Przykład EntityManagerFactory emf = Persistence.createEntityManagerFactory("pu1"); EntityManager em = emf.createentitymanager(); Adres a1 = new Adres("Matematyków", 7, "Kraków"); OsobaZAdresem o1 = new OsobaZAdresem("Ala", 'K', a1); OsobaZAdresem o2 = new OsobaZAdresem("Ola", 'K', a1); em.gettransaction().begin(); em.persist(o1); em.persist(o2); em.gettransaction().commit(); List<OsobaZAdresem> list = em.createquery("select o from OsobaZAdresem o").getresultlist(); for (OsobaZAdresem akt : list) { System.out.print(akt.getImie()); System.out.println(" - "+akt.getadres().getulica()+" - " +akt.getadres()); em.close();

13 Cykl życia new nie ma persistence identity, ani nie należy do persistence context managed ma i należy detached ma i nie należy removed należy, ale ma być usunięta z bazy po wywołaniu remove() encja jest zaplanowana do usunięcia, ale usuwana dopiero przy zatwierdzaniu transakcji lub po wywołaniu flush() po merge() encja zaczyna na powrót należeć o przestać może jak zakończył się persistence context (patrz SLSB) lub została zdeserializowana o merge() zwraca nową encję, a nie przekazany parametr (chyba, że przekazaliśmy encję managed)

14 Dodajemy public class int id; private String private Adres private Collection<OsobaZAdresem> pracownicy; Firma f1 = new Firma("Moja Firma", new Adres("Matematyków", 8, "Warszawa")); List<OsobaZAdresem> osoby = generujosoby(); for (OsobaZAdresem o : osoby) f1.zatrudnij(o); em.gettransaction().begin(); for (OsobaZAdresem o : osoby) em.persist(o); em.persist(f1); em.gettransaction().commit(); Firma f = (Firma) em.createquery("select f from Firma f").getsingleresult();

15 Związki Rodzaje związków o1-1, 1-m, n-1, n-m o jedno/dwukierunkowe o czyli 7 możliwych kombinacji! Związki dwukierunkowe mają dwie strony owning oraz inverse ostrona inverse musi się odwoływać do strony owning przy pomocy atrybutu ow dwukierunkowych związkach n-1 strona wiele jest zawsze owning i nie może posiadać atrybutu mappedby o W dwukierunkowych związkach 1-1 strona owning posiada klucz obcy o W dwukierunkowych związkach n-m każda ze stron może być owning

16 Związki c.d. Kaskadowość o omożliwe elementy tablicy PERSIST, MERGE, REMOVE, REFRESH oraz ALL wskazują jakie operacje przenoszą się kaskadowo na elementy pozostające w związku o domyślnie tablica jest pusta Leniwe/Gorliwe ładowanie o ze względu na efektywność domyślnie jest FetchType.LAZY ojeżeli encje są przekazywane klientowi (datached) używamy FetchType.EAGER o fetch joins

17 Przykład public class Order implements Serializable { private int id; private String ordername; private public int getid() { return id; public void setid(int id) { this.id = public Shipment getshipment() { return shipment; Związek w bazie CREATE TABLE ORDERUNI ( ID INTEGER NOT NULL, ORDERNAME VARCHAR(255), SHIPMENT_ID INTEGER ); Specyfikacja określa zasady nazywania klucza obcego Dla wersji jednokierunkowej w Shipment nie trzeba nic zmieniać public void setshipment(shipment shipment){ this.shipment = shipment;...

18 Przykład 1-1 BasicConfigurator.configure(); Logger.getLogger("org").setLevel(Level.ERROR); final EntityManagerFactory emf = Persistence.createEntityManagerFactory("jee6"); final EntityManager em = emf.createentitymanager(); em.gettransaction().begin(); dosomestuff(em); System.out.println("Unidirectional One-To-One List<Order> li = em.createquery("select o FROM OrderUni o").getresultlist(); for (Order o : li) { System.out.println("Order "+o.getid()+": "+o.getordername()); System.out.println("\tShipment details: "+o.getshipment().getcity()+ +o.getshipment().getzipcode()); em.gettransaction().commit();

19 1-1 wersja public class Shipment { private int id; private String city; private String zipcode; private public int getid() { return id; public void setid(int id) { this.id = public Order getorder() { return order; Przy pomocy parametru mappedby wskazujemy, który atrybut encji Order realizuje związek Reprezentacja w bazie i encja Order się nie zmieniają Trzeba pamiętać o utrzymywaniu związku między obiektami Shipment s = new Shipment(); s.setcity("austin"); s.setzipcode("78727"); Order o = new Order(); o.setordername("software Order"); o.setshipment(s); s.setorder(o); public void setorder(order order) { this.order = order;... em.persist(o);

20 1-m wersja public class Employee { private int id; private String name; private char sex; private Company public Company getcompany() { return company; public void setcompany(company company) { this.company = public class Company { private int id; private String name; private Collection<Employee> employees = new fetch=fetchtype.eager, mappedby="company") public Collection<Employee> getemployees() { return employees; public void setemployees(collection<employee> employees) { this.employees = employees;

21 1-m wersja dwukierunkowa final EntityManagerFactory emf = Persistence.createEntityManagerFactory("jwt10"); final EntityManager em = emf.createentitymanager(); em.gettransaction().begin(); deleteall(em); List<Company> lic = em.createquery("select c FROM Company1MBid c").getresultlist(); for (Company c : lic) { System.out.println("Employees of company: "+c.getname()); for (Employee e : c.getemployees()) { System.out.println("\tName: "+e.getname()+", Sex: "+e.getsex()); System.out.println(); List<Employee> lie = em.createquery("select e FROM Employee1MBid e").getresultlist(); for (Employee e : lie) { Company c = e.getcompany(); System.out.println("Employee: "+e.getname()+" works for: "+c.getname()); em.gettransaction().commit();

22 1-m jedno vs wielokierunkowe związek jednokierunkowy CREATE TABLE COMPANY1MUNI ( ID INTEGER NOT NULL, NAME VARCHAR(255) ); CREATE TABLE COMPANY1MUNI_EMPLOYEE1MUNI ( COMPANY1MUNI_ID INTEGER NOT NULL, EMPLOYEES_ID INTEGER NOT NULL ); --po stronie wiele powinny być więzy UNIQUE CREATE TABLE EMPLOYEE1MUNI ( ID INTEGER NOT NULL, SEX CHAR(1) NOT NULL, NAME VARCHAR(255) ); związek wielokierunkowy CREATE TABLE COMPANY1MBID ( ID INTEGER NOT NULL, NAME VARCHAR(255) ); CREATE TABLE EMPLOYEE1MBID ( ID INTEGER NOT NULL, SEX CHAR(1) NOT NULL, NAME VARCHAR(255), COMPANY_ID INTEGER );

23 EJB-QL Złączenia GROUP BY HAVING Projekcje Podzapytania Zapytania dynamiczne Nazwane zapytania Tworzenie w zapytaniu nowych obiektów Grupowe operacje UPDATE i DELETE

24 Złączenia Mogą służyć do: selekcji danych, dla których spełniony jest warunek złączenia do kontrolowania gorliwego ładowania Przykłady (można też używać składni tradycyjnej): JOIN o SELECT DISTINCT c FROM Company1MUni c JOIN c.employees LEFT JOIN o SELECT DISTINCT c FROM Company1MUni c LEFT JOIN c.employees LEFT OUTER JOIN o SELECT DISTINCT c FROM Company1MUni c LEFT JOIN FETCH c.employees

25 Projekcje/Podzapytania Wersja dwukierunkowa SELECT e.name, c.name FROM Employee1MBid e, Company1MBid c WHERE e.company = c Wersja jednokierunkowa SELECT e.name, c.name FROM Employee1MUni e, Company1MUni c WHERE e IN (SELECT em FROM c.employees em) Albo po prostu SELECT e.name, c.name FROM Company1MUni c JOIN c.employees e

26 Klauzule GROUP BY i HAVING Można używać GROUP BY i HAVING SELECT e.sex, count(e) FROM Employee1MUni e GROUP BY e.sex HAVING count(e) > 0 Wynikiem jest lista krotek (tu par) List<Object[]> lic1 = em.createquery("select e.sex, count(e) FROM Employee1MUni e GROUP BY e.sex HAVING count(e) > 0").getResultList(); for (Object[] o : lic1) { boolean czykobieta = (Character) o[0] == 'F'; System.out.println("Na uczelniach pracuje: "+o[1]+" "+ ((czykobieta)? "kobiet" : "mężczyzn"));

27 Tworzenie w zapytaniu nowych obiektów class PracFirma { String pname; String cname; public PracFirma(String name, String name2) { pname = name; cname = name2; public String tostring() { return List<PracFirma> li7 = em.createquery("select NEW cd.reszta.pracfirma(e.name, c.name) FROM Company1MUni c JOIN c.employees e").getresultlist(); for (PracFirma o : li7) System.out.println(o);

28 Zapytania dynamiczne Query q4 = em.createquery("select e FROM Employee1MUni e WHERE e.name LIKE List<Employee> lic4 = q4.setparameter("empname", "%").getresultlist(); for (Employee e : lic4) { System.out.println("Name: "+e.getname()+", Sex: "+e.getsex()+"\n"); uwaga na SQL-injection jednokrotnie przygotowywany plan zapytania

29 Grupowe operacje UPDATE i DELETE Operacja dotyczy encji (i wszystkich jej podklas) Operacja nie przenosi się kaskadowo na powiązane encje o np. w przykładzie 1-m w wersji jednokierunkowej zadziałają więzy dla tabeli złączeniowej Zmiany zachodzą bezpośrednio w bazie danych o obchodzone jest optymistyczne blokowanie (kolumna z wersją nie jest automatycznie uaktualniana) Persistence Context nie jest synchronizowany z wynikiem operacji o można wykonać flush() Query q = em.createquery("delete FROM RoadVehicleSingle"); q.executeupdate(); Query q = em.createquery("update RoadVehicleJoined r SET r.numpassengers = 1"); q.executeupdate();

30 JPA bardziej obiektowe niż EB Są hierarchie klas Jest polimorfizm JPA-QL (inaczej EJB3-QL) jest obiektowy i niezależny od platformy JPA pod strzechami jest całkiem rozbudowane, ale też dobrze przemyślany o w kryzysowych sytuacjach można zapomnieć o bazie i myśleć obiektowo o z drugiej strony zrozumienie to pierwszy krok do kontroli

31 Przykładowa hierarchia klas public class RoadVehicle { public enum AccelerType {PEDAL,THROTTLE; protected int id; protected int numpassengers; protected int numwheels; protected String make; protected String model; public class Motorcycle extends RoadVehicle { public final AccelerType accelertype = AccelerType.THROTTLE; public class Car extends RoadVehicle { public final AccelerType accelertype = AccelerType.PEDAL; public class Coupe extends Car { public enum BoringFactor {BORING,BORINGER,BORINGEST; private BoringFactor boringfactor; public class Roadster extends Car { public enum CoolFactor {COOL,COOLER,COOLEST; private CoolFactor coolfactor;

32 Reprezentacja dziedziczenia Jedna tabela dla całej hierarchii klas o sposób domyślny Złączenia Po jednej tabeli na encję o tylko dla encji konkretnych (nieabstrakcyjnych)

33 Jedna tabela dla całej hierarchii klas Do rozróżniania podklas używana jest descriminator column zalety: bardzo efektywny polimorfizm wady: potencjalnie dużo wartości null o nie stosować z hierarchiami zawierającymi bardzo dużo atrybutów/właściwości o nie można stosować więzów public class RoadVehicle implements Serializable { public enum AccelerType protected int id; protected int numpassengers; protected int numwheels; protected String make; protected String model; public RoadVehicle() { id = (int) System.nanoTime();...

34 c.d. public class Motorcycle extends RoadVehicle implements Serializable { public final AccelerType accelertype = AccelerType.THROTTLE; public Motorcycle() { super(); numwheels = 2; numpassengers public class Car extends RoadVehicle implements Serializable { public final AccelerType accelertype = AccelerType.PEDAL; public Car() { super(); numwheels = 4;...

35 Reprezentacja hierarchii w bazie CREATE TABLE ROADVEHICLESINGLE ( DISC VARCHAR(31) NOT NULL, ID INTEGER NOT NULL, NUMPASSENGERS INTEGER NOT NULL, NUMWHEELS INTEGER NOT NULL, MAKE VARCHAR(255), MODEL VARCHAR(255), ACCELERATORTYPE INTEGER, BORINGFACTOR INTEGER, COOLFACTOR INTEGER );

36 Złączenia Tabela zawiera jedynie atrybuty/właściwości z definicji podklasy. zalety: sprawdza się dla hierarchii zawierających bardzo dużo atrybutów/właściwości (różnych w różnych gałęziach) wady: często są potrzebne złączenia o nie stosować dla bardzo głębokich hierarchii Co o większość adnotacji ma domyślne wartości i można ich nie podawać o uwaga nie wszystkie implementacje dodają kolumny DTYPE do @Inheritance(strategy=InheritanceType.JOINED) public class RoadVehicle implements Serializable { public enum AccelerType protected int id; protected int numpassengers; protected int numwheels; protected String make; protected String model;...

37 Przykładowa hierarchia klas CREATE TABLE ROADVEHICLEJOINED ( ID INTEGER NOT NULL, NUMPASSENGERS INTEGER NOT NULL, NUMWHEELS INTEGER NOT NULL, MAKE VARCHAR(255), MODEL VARCHAR(255) --DTYPE ); CREATE TABLE MOTORCYCLEJOINED ( ID INTEGER NOT NULL, ACCELERATORTYPE INTEGER ); CREATE TABLE CARJOINED ( ID INTEGER NOT NULL, ACCELERATORTYPE INTEGER ); CREATE TABLE COUPEJOINED ( ID INTEGER NOT NULL, BORINGFACTOR INTEGER ); CREATE TABLE ROADSTERJOINED ( ID INTEGER NOT NULL, COOLFACTOR INTEGER );

38 Po jednej tabeli na encję Nie wymagane przez specyfikacje (nieobowiązkowe) Każda konkretna encja ma swoją tabelę ze wszystkimi atrybutami (bezpośrednimi i odziedziczonymi) Wszystkie konkretne encje muszą mieć taki sam klucz Trudniejszy polimorfizm (w poprzedniej metodzie wystarczyła przejrzeć jedną tabelkę i ew. dołączyć pozostałe

39 Inne zagadnienia dotyczące reprezentacji dziedziczenia Jeżeli encja rozszerza nie-encję używamy opodobne do po jednej tabeli na encję, ale mniej tabel oprzydatne w wypadku jak wiele encji współdzieli atrybuty/właściwości ow nadklasie można używać adnotacji dotyczących mapowania związków ojeżeli nadklasy nie adnotujemy to pochodzące z niej atrybuty/właściwości nie będą utrwalane Encje mogą być klasami abstrakcyjnymi opolimorfizm

40 Polimorfizm public class Test public static void main(final String[] args) { final EntityManagerFactory emf = Persistence.createEntityManagerFactory("jee6"); final EntityManager em = emf.createentitymanager(); em.gettransaction().begin(); Coupe c = new Coupe();...; em.persist(c); Roadster r = new Roadster();...; em.persist(r); Motorcycle m = new Motorcycle();...; em.persist(m); em.gettransaction().commit(); Query q = em.createquery("select c FROM RoadVehicleJoined c"); List<RoadVehicle> vehicles = q.getresultlist(); for (RoadVehicle rv : vehicles) System.out.println(rv.getClass().getSimpleName()+": "+rv);

41 Transakcje

42 Czemu potrzebujemy transakcji Operacje atomowe try { // Wypłata z konta A catch (Exception e) { // Nie udało się wypłacić, // więc nie kontynuujemy return; try { // Wpłata na konto B catch (Exception e) { // Nie udało się wpłacić, // więc należy zwrócić pieniądze // na konto A // Wpłata na konto A return; Problemy okod jest rozwlekły i trudny do zrozumienia. owycofywanie staje się bardziej skomplikowane, jeżeli jest więcej operacji (np. 10) otrzeba rozważyć wszystkie możliwości. A co jak zwrot pieniędzy na konto A się nie powiódł? o Taki kod trudno testować

43 Czemu potrzebujemy transakcji Komunikacja zdalna o Czy sieć padła przed czy po wykonaniu operacji na zdalnym serwerze? Awaria bazy danych podczas zapisu o Redundancja sprzętowa nie daje 100% pewności! Współdzielenie danych przez wielu klientów o wiele aplikacji o wielu użytkowników o problem "lost update" x = odczytajstan(kontoa); x = x+100; zapiszstan(kontoa, x); Tansakcja 1 Tansakcja 2 x = odczytajstan(kontoa); x = x+100; zapiszstan(kontoa, x);

44 Korzyści ze stosowania transakcji Zaawansowana kontrola współbieżności oraz obsługi błędów Własności ACID oatomicity grupa operacji jest traktowana jako jedna nierozerwalna całość i podlega semantyce wszystko albo nic automatyczne wycofywanie skutków początkowych operacji z transakcji, jeżeli później wystąpił błąd oconsistency po zakończeniu transakcji system jest w stanie spójnym, w trakcie nie musi być, bo mamy atomowość oisolation wiele transakcji współbieżnie odczytuje i modyfikuje stan bazy danych, z punktu widzenia każdej z nich innych transakcji nie ma automatyczne zarządzanie blokadami odurability modyfikacje bazy danych przetrwają awarie, np. chwilowy brak zasilania prowadzenie dziennika zmian, który umożliwia dokończenie zmian po wznowieniu pracy

45 Nazewnictwo obiekt/komponent transakcyjny (transactional object/component) np. enterprise bean lub MS.NET-managed component zarządca transakcji (transaction manager) koordynuje operacje obiektów transakcyjnych zasób (resource) np. baza danych lub kolejka komunikatów zarządca zasobu (resource manager) nadzoruje trwały stan zasobu zarządca transakcji i zasobu najczęściej komunikują się za pomocą interfejsu X/Open XA

46 Modele transakcji Płaskie transakcje o begin, commit/abort o grupowanie operacji oraz wszystko albo nic o za wycofywanie odpowiada zarządca zasobu, a nie komponent Zagnieżdżone transakcje o zadanie z rezerwacją podróży odrzewo transakcji transakcje zagnieżdżone same mogą być płaskie lub zagnieżdżone Specyfikacja nie wymaga by zarządca transakcji EJB obsługiwał transakcje zagnieżdżone

47 Transakcje rozproszone Możliwe scenariusze o w ramach jednej transakcji modyfikowane są różne bazy danych o w ramach jednej transakcji wykonywane są operacje na bazie danych, kolejce komunikatów oraz systemach zastanych o wiele serwerów aplikacji koordynuje w tej samej transakcji Trwałość (durability) już nie jest taka oczywista! o Wszystko co ma się stać jest najpierw zapisywane w dzienniku o 2PC

48 Izolacja Przypomnijmy problem "lost update" x = odczytajstan(kontoa); x = x+100; zapiszstan(kontoa, x); Tansakcja 1 Tansakcja 2 x = odczytajstan(kontoa); x = x+100; zapiszstan(kontoa, x); Potrzebne są blokady o nadużywanie może doprowadzić do zakleszczeń o blokady do czytania i pisania ospotykamy w bazach danych, systemach kontroli wersji, a nawet językach programowania (synchronizacja)

49 Poziomy izolacji read uncommited oduża współbieżność, dużo problemów //stan A = 100 x = odczytajstan(a); x = x+100; zapiszstan(a, x); rollback; Dirty read problem Tansakcja 1 Tansakcja 2 x = odczytajstan(a); //odczytaliśmy //niespójny stan bazy x = x+100; zapiszstan(a, x); //stan A = 300

50 Poziomy izolacji read uncommited oduża współbieżność, dużo problemów read commited ozabezpiecza przed dirty read o najczęściej spotykany w praktyce Unrepeatable read problem Tansakcja 1 Tansakcja 2 x = odczytajstan(a); y = odczytajstan(a); x!= y zapiszstan(a, 200); commit;

51 Poziomy izolacji read uncommited oduża współbieżność, dużo problemów read commited ozabezpiecza przed dirty read o najczęściej spotykany w praktyce repeatable read Phantom read problem Tansakcja 1 Tansakcja 2 x = stansumaryczny(); y = stansumaryczny(); x!= y dodajkonto(c, 100); commit; ozabezpiecza przed unrepeatable read

52 Poziomy izolacji read uncommited o duża współbieżność, dużo problemów read commited ozabezpiecza przed dirty read o najczęściej spotykany w praktyce repeatable read ozabezpiecza przed unrepeatable read serializable o zabezpiecza przez phantom read

53 Poziomy izolacji a EJB Poziomy izolacji dotyczą poszczególnych zasobów onp. dla połączenia JDBC Connection.setIsolationLevel() ow JPA maksymalny domyślny poziom izolacji to read commited

54 Podejścia do współbieżności Pesymistyczne Dla JPA manager.lock(encja, LockMode.WRITE); manager.lock(encja, LockMode.READ); oba rodzaje chronią przez dirty reads i unrepeatable reads Optymistyczne ooptymistyczne blokowanie = zero blokowania konflikty ustala się na podstawie specjalnego public int version; o możliwe typy: int, Integer, short, Short, long, Long, java.sql.timestamp o sami nie dotykamy tego atrybutu o przy każdej zmianie danych w bazie atrybut jest powiększany o nie broni przed phantom read

Java Enterprise Edition spotkanie nr 6. przygotował Jacek Sroka. Java Persistence API

Java Enterprise Edition spotkanie nr 6. przygotował Jacek Sroka. Java Persistence API Java Enterprise Edition spotkanie nr 6 Java Persistence API Trwałość Serializacja dane reprezentowane binarnie lub w XMLu brak wyszukiwania brak transakcji O/R mapping zazwyczaj: klasa->tabela, obiekt->wiersz,

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

JAVA PERSISTENCE API CZĘŚĆ 2 ASPEKTY ZAAWANSOWANE. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

JAVA PERSISTENCE API CZĘŚĆ 2 ASPEKTY ZAAWANSOWANE. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska JAVA PERSISTENCE API CZĘŚĆ 2 Waldemar Korłub ASPEKTY ZAAWANSOWANE Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska JPA w aplikacji Java EE Połączeniem z bazą danych zarządza serwer aplikacji

Bardziej szczegółowo

JAVA PERSISTENCE API. Wykorzystano fragmenty wykładów M. Piotrowskiego i M. Wójcika. Waldemar Korłub

JAVA PERSISTENCE API. Wykorzystano fragmenty wykładów M. Piotrowskiego i M. Wójcika. Waldemar Korłub Wykorzystano fragmenty wykładów M. Piotrowskiego i M. Wójcika JAVA PERSISTENCE API Waldemar Korłub Platformy Technologiczne KASK ETI Politechnika Gdańska Java Persistence API 2 Specyfikacja dla bibliotek

Bardziej szczegółowo

ORM w Javie. Adam Michalik 2007

ORM w Javie. Adam Michalik 2007 ORM w Javie Adam Michalik 2007 ORM ORM O/RM O/R mapping Object-Relational Mapping Mapowanie obiektowo relacyjne Odwzorowanie obiektowo-relacyjne Co to jest ORM? Odwzorowanie obiektowo-relacyjne pozwala

Bardziej szczegółowo

Wykład 8. SQL praca z tabelami 5

Wykład 8. SQL praca z tabelami 5 Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu

Bardziej szczegółowo

Nowy powiew od Słońca: EJB 3.0. Copyright Piotr Kochański & Erudis,

Nowy powiew od Słońca: EJB 3.0. Copyright Piotr Kochański & Erudis, Nowy powiew od Słońca: EJB 3.0 Wstęp Agenda EJB podstawowe informacje Problemy EJB 1.X i 2.X Zmiany wprowadzone w EJB v. 3.0 uproszczone API nowe komponenty encyjne wzorce i antywzorce Przykład, czyli

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

Utrwalanie danych zastosowanie obiektowego modelu danych warstwy biznesowej do generowania schematu relacyjnej bazy danych Przykład

Utrwalanie danych zastosowanie obiektowego modelu danych warstwy biznesowej do generowania schematu relacyjnej bazy danych Przykład Utrwalanie danych zastosowanie obiektowego modelu danych warstwy biznesowej do generowania schematu relacyjnej bazy danych Przykład Autor Zofia Kruczkiewicz Wzorce oprogramowania 5 1. Tworzenie bazy danych

Bardziej szczegółowo

Podstawowe informacje o technologii Java Persistence API

Podstawowe informacje o technologii Java Persistence API Podstawowe informacje o technologii Java Persistence API na podstawie https://docs.oracle.com/javaee/7/jeett.pdf Programowanie komponentowe 4 Programowanie komponentowe 4, Zofia Kruczkiewicz 1 1. Klasy

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

1. Model ACID. 2. Deklaratywne zarządzanie transakcjami, atrybuty transakcji. 3. Propagacja transakcji. transakcje rozproszone, propagacja kontekstu

1. Model ACID. 2. Deklaratywne zarządzanie transakcjami, atrybuty transakcji. 3. Propagacja transakcji. transakcje rozproszone, propagacja kontekstu Transakcje 1. Model ACID. 2. Deklaratywne zarządzanie transakcjami, atrybuty transakcji. 3. Propagacja transakcji. transakcje rozproszone, propagacja kontekstu utrwalania. 3. Izolacja typowe problemy,

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

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

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

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

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM Cel laboratorium 5 Należy wykonać dwie aplikacje zawierające warstwę integracji

Bardziej szczegółowo

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych. Dr inż. Paweł Kasprowski Plan wykładu Bazy danych Architektura systemów zarządzania bazami danych Realizacja zapytań algebra relacji Wielodostęp do danych - transakcje Dr inż. Paweł Kasprowski pawel@kasprowski.pl Aplkacja przechowująca

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

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

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

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

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

Programowanie w języku Java. Bazy danych SQLite w Javie

Programowanie w języku Java. Bazy danych SQLite w Javie Programowanie w języku Java Bazy danych SQLite w Javie Co to jest SQLite SQLite to bezserwerowa, nie wymagająca konfiguracji relacyjna baza danych. Znajduje szerokie zastosowanie np.. w systemie android

Bardziej szczegółowo

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

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie 1 czerwca 2009 Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie = bjects = database for objects w pełni obiektowa

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

Podstawowe informacje o technologii Java Persistence API - przykład

Podstawowe informacje o technologii Java Persistence API - przykład 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

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Wprowadzenie do projektowania i wykorzystania baz danych Relacje Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR

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

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

Zaawansowane aplikacje internetowe - laboratorium

Zaawansowane aplikacje internetowe - laboratorium Zaawansowane aplikacje internetowe - laboratorium Java Persistence. Do wykonania ćwiczeń potrzebne jest zintegrowane środowisko programistyczne NetBeans IDE 5.5 wraz z serwerem Sun Java System Application

Bardziej szczegółowo

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

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

Współbieżność w środowisku Java

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

Bardziej szczegółowo

Oracle11g: Wprowadzenie do SQL

Oracle11g: Wprowadzenie do SQL Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom

Bardziej szczegółowo

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

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

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

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

Podstawy frameworka Spring

Podstawy frameworka Spring Podstawy frameworka Spring Adresaci szkolenia: Szkolenie przeznaczone jest dla programistów znających język Java, chcących poszerzyć swoje kompetencje w zakresie tworzenia aplikacji.koncepcja szkolenia

Bardziej szczegółowo

Java Persistence API (JPA)

Java Persistence API (JPA) Java Persistence API (JPA) Do wykonania ćwiczeń potrzebne jest zintegrowane środowisko programistyczne NetBeans IDE 7.0 wraz z serwerem GlassFish v3 (do pobrania z http://www.netbeans.org/) oraz środowisko

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 do środowiska NetBeans 7.0.1: Łukasz Przytuła, opracowanie materiałów: Andrzej Dawidowicz Do wykonania ćwiczeń potrzebne

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

Platformy Programistyczne Podstawy języka Java Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo

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

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

Bazy danych. Andrzej Łachwa, UJ, /15

Bazy danych. Andrzej Łachwa, UJ, /15 Bazy danych Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 12/15 WSPÓŁBIEŻNOŚĆ Serwer bazodanowy nie może obsługiwać klientów sekwencyjnie: wszyscy musieli by czekać

Bardziej szczegółowo

Java Persistence API - zagadnienia zaawansowane

Java Persistence API - zagadnienia zaawansowane Program szkolenia: Java Persistence API - zagadnienia zaawansowane Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Java Persistence API - zagadnienia zaawansowane Java-EE-jpa-pro

Bardziej szczegółowo

Post-relacyjne bazy danych

Post-relacyjne bazy danych Post-relacyjne bazy danych Historia języka SQL 1. Sequel-XRM 2. Sequel/2 SQL 3. ANSI SQL 1986 (ISO 1987) 4. X/Open (UNIX), SAA(IBM) 5. ANSI SQL 1989 6. ANSI/ISO SQL 92 Entry level 7. ANSI SQL 92 (SQL 2)

Bardziej szczegółowo

Tomasz Dobek. t.dobek@students.mimuw.edu.pl

Tomasz Dobek. t.dobek@students.mimuw.edu.pl Spring Framework Tomasz Dobek t.dobek@students.mimuw.edu.pl Plan prezentacji Spring z lotu ptaka Kontener Spring IoC Spring AOP Menedżer transakcji w Springu Spring DAO Testy integracyjne Podsumowanie

Bardziej szczegółowo

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska Obsługa transakcji rozproszonych w języku j Java Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska Plan prezentacji Transakcje i ich własności Proste transakcje w JDBC

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

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

BAZY DANYCH. Transakcje. opracowanie: Michał Lech BAZY DANYCH Transakcje opracowanie: Michał Lech Plan wykładu 1. Transakcje - co to jest? 2. Mechanizmy transakcji 3. Reguły ACID 4. Niekorzystne zjawiska 5. Poziomy izolacji 6. Polecenia PostgreSQL transakcji

Bardziej szczegółowo

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. 77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele

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

Tworzenie warstwy integracji i uzupełnienie wartwy prezentacji w wielowarstwowej aplikacji Przykład w środowisku Visual Web JSP

Tworzenie warstwy integracji i uzupełnienie wartwy prezentacji w wielowarstwowej aplikacji Przykład w środowisku Visual Web JSP Tworzenie warstwy integracji i uzupełnienie wartwy prezentacji w wielowarstwowej aplikacji Przykład w środowisku Visual Web JSP Autor Zofia Kruczkiewicz Programowanie i wdrażanie systemów informatycznych

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

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

Internetowe bazy danych

Internetowe bazy danych Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 3 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl Typy tabel MySQL domyślny MyISAM inne możliwe:

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

Relacje. 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje.

Relacje. 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje. Relacje 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje. 1 Relacje Modelowanie pojęć biznesowych wymaga łączenia komponentów

Bardziej szczegółowo

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika Programowanie w SQL procedury i funkcje UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika 1. Funkcje o wartościach skalarnych ang. scalar valued

Bardziej szczegółowo

Enkapsulacja, dziedziczenie, polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm 17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja

Bardziej szczegółowo

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3 Plan wykładu Spis treści 1 Przetwarzanie transakcyjne 1 1.1 Cechy transakcji................................. 2 1.2 Rozpoczęcie i zakończenie........................... 3 1.3 Punkty bezpieczeństwa.............................

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.

Bardziej szczegółowo

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Historia i standardy Podstawy relacyjności Typy danych DDL tabele, widoki, sekwencje zmiana struktury DML DQL Podstawy, złączenia,

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Wzorce dystrybucji i wspólbieżności autonomicznej

Wzorce dystrybucji i wspólbieżności autonomicznej Wzorce dystrybucji i wspólbieżności autonomicznej 1. Wzorce dystrybucji, fasada zdalna (Remote Facade), obiekt transfery danych (Data Transfer Object), 2. Wzorce współbieżności autonomicznej, blokada optymistyczna

Bardziej szczegółowo

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone Plan wykładu CORBA Wprowadzenie Architektura CORBA IDL język definicji interfejsów ORB Object Request Broker Usługi i POA Aplikacje CORBA tworzenie serwera tworzenie klienta Aplikacje rozproszone Cechy

Bardziej szczegółowo

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1 Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,

Bardziej szczegółowo

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System

Bardziej szczegółowo

Relacje. 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje.

Relacje. 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje. 1 Relacje 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje. 2 Relacje Modelowanie pojęć biznesowych wymaga łączenia komponentów

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

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

akademia androida Składowanie danych część VI

akademia androida Składowanie danych część VI akademia androida Składowanie danych część VI agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie. 1. SharedPreferences.

Bardziej szczegółowo

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł

Bardziej szczegółowo

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych Plan wykładu Bazy danych Wykład 9: Przechodzenie od diagramów E/R do modelu relacyjnego. Definiowanie perspektyw. Diagramy E/R - powtórzenie Relacyjne bazy danych Od diagramów E/R do relacji SQL - perspektywy

Bardziej szczegółowo

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko Podstawowe pojęcia dotyczące relacyjnych baz danych mgr inż. Krzysztof Szałajko Czym jest baza danych? Co rozumiemy przez dane? Czym jest system zarządzania bazą danych? 2 / 25 Baza danych Baza danych

Bardziej szczegółowo

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej ransakcje Definicja i własności transakcji, zatwierdzanie i wycofywanie, punkty bezpieczeństwa, spójność, anomalie współbieżnego dostępu do danych, poziomy izolacji transakcji, blokady, zakleszczenie Definicja

Bardziej szczegółowo

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw

Bardziej szczegółowo

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15 T-SQL dla każdego / Alison Balter. Gliwice, cop. 2016 Spis treści O autorce 11 Dedykacja 12 Podziękowania 12 Wstęp 15 Godzina 1. Bazy danych podstawowe informacje 17 Czym jest baza danych? 17 Czym jest

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

Bardziej szczegółowo

Bazy danych wykład dziewiaty Transakcje. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Bazy danych wykład dziewiaty Transakcje. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa) Bazy danych wykład dziewiaty Transakcje Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa dziewiaty Transakcje 1 / 42 Outline 1 Transakcje Problemy interakcji 2 Metody usuwania konfliktów

Bardziej szczegółowo

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów

Bardziej szczegółowo

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

Bardziej szczegółowo

Bazy danych 9. SQL Klucze obce Transakcje

Bazy danych 9. SQL Klucze obce Transakcje Bazy danych 9. SQL Klucze obce Transakcje P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Klucze obce Klucze obce powiazanie indeksowanej kolumny jakiejś tabeli z indeksowana kolumna

Bardziej szczegółowo

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1 Tworzenie tabel Tabela podstawowa struktura, na której zbudowana jest relacyjna baza danych. Jest to zbiór kolumn (atrybutów) o ustalonych właściwościach, w których przechowuje się dane. Dane te są reprezentowane

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

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze Funkcje użytkownika Tworzenie funkcji Usuwanie funkcji Procedury składowane Tworzenie procedur składowanych Usuwanie procedur składowanych Wyzwalacze Wyzwalacze a ograniczenia i procedury składowane Tworzenie

Bardziej szczegółowo

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019 Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości

Bardziej szczegółowo

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu): Utwórz bazę danych Cw: CREATE DATABASE Cw Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu): DBCC USEROPTIONS Przykład z zapisem do tabeli tymczasowej: --Jeśli istnieje tabela tymczasowa

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Jeśli pobieramy dane z więcej niż jednej tabeli, w rzeczywistości wykonujemy tak zwane złączenie. W SQL istnieją instrukcje pozwalające na formalne wykonanie złączenia tabel - istnieje

Bardziej szczegółowo

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie

Bardziej szczegółowo

Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas)

Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas) Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas) Bazy danych podstawowe pojęcia Baza danych jest to zbiór danych zorganizowany zgodnie ze ściśle określonym modelem danych. Model danych to zbiór ścisłych

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006 OBIEKTOWOŚĆ W BAZIE DANYCH ORACLE Monika Kruk Mariusz Grabowski Informatyka Stosowana WFiIS, AGH 13 grudzień 2006 Plan prezentacji kilka słów o bazie danych ORACLE rzecz o obiektach ORACLE tworzenie typów

Bardziej szczegółowo

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

Java Persistence API. Class powinny być zaznaczone. Kliknij przycisk Finish. Java Persistence API Do wykonania ćwiczeń potrzebne jest środowisko programistyczne NetBeans IDE wraz z serwerem Glassfish V3 (do pobrania z http://www.netbeans.org/downloads/index.html jako Java EE 5

Bardziej szczegółowo

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu

Bardziej szczegółowo

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Marek Robak Wprowadzenie do języka SQL na przykładzie baz SQLite Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Tworzenie tabeli Pierwsza tabela W relacyjnych bazach danych jedna

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo