Technologie dostępu do baz danych z aplikacji Javy:

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

Download "Technologie dostępu do baz danych z aplikacji Javy:"

Transkrypt

1 Technologie dostępu do baz danych z aplikacji Javy: JDBC (ang. Java DataBase Connectivity - łącze do baz danych w języku Java) - interfejs programowania opracowany w 1996 r. przez Sun Microsystems, umożliwiający niezależnym od platformy aplikacjom napisanym w języku Java porozumiewać się z bazami danych za pomocą języka SQL.Jest to podstawowy interfejs dostępu do baz danych lecz ręczne kodowanie w JDBC jest uciążliwe i podatne na błędy SQLJ jest metodą osadzania instrukcji SQL w kodzie JAVA, które następnie przy użyciu translatora SQLJ zamieniane są na kod JAVA Jest to odporna na błędy alternatywa dla bezpośredniego korzystania z JDBC Encyjne EJB (Enterprise JavaBeans) reprezentują w sposób obiektowy dane (np. przykrywają relacyjną bazę danych).wszelki dostęp do danych (w tym i masowy) odbywa się poprzez obiekty napisane w języku Java, a zatem niesie ze sobą ograniczenia wydajnościowe i zajętości zasobów.ziarenka encyjne mimo ich konkretnych zadań określonych w specyfikacji EJB, w praktyce nie są przenośne.nie poddają się również serializacji,przez co trzeba definiować dodatkowe obiekty transferu danych (DTO Data Transfer Object).EJB wymusza nienaturalny styl programowania w Javie i utrudnia ponowne wykorzystanie kodu poza konkretnym kontenerem. Obecnie trwają prace nad przebudowaną wersją 3.0 specyfikacji Biblioteka znaczników JSTL SQL Wygodna w prostych aplikacjach opartych na JSP Miesza logikę biznesową z logiką prezentacji, narusza model MVC MVC (ang. Model-View-Controller) - Model-Widok-Kontroler to wzorzec projektowy w informatyce, którego głównym założeniem jest wyodrębnienie trzech podstawowych komponentów aplikacji: modelu danych interfejsu użytkownika logiki sterowania w taki sposób, aby modyfikacje jednego komponentu minimalnie wpływały na pozostałe. Technologie odwzorowania obiektowo-relacyjnego (ang. O/RM (ORM) object/relational mapping) Efektywnie mapują świat obiektów na świat relacyjnej bazy danych.do podstawowych zalet O/RM należą: Produktywność (uniknięcie tworzenia uciążliwego kodu obsługującego bazę danych) Łatwość pielęgnacji aplikacji (mniej kodu, elastyczność) Wydajność (przy założeniu ograniczonego czasu i budżetu na zbudowanie i optymalizację aplikacji) Niezależność od konkretnego SZBD Technologie te najczęściej działają w warstwie webowej aplikacji. W chwili obecnej stanowią najlepsze rozwiązanie. Rozwiązanie ORM składa się z 4 podstawowych elementów: interfejsu do przeprowadzania podstawowych operacji CRUD na obiektach klas zapewniających trwałość języka lub interfejsu programistycznegodo określania zapytań związanych z klasami lub ich właściwościami narzędzia do określania metadanych technik interakcji z obiektami trwałymi m.in. Wykrywanie zmian w trwałych obiektach Różne sposoby pobierania obiektów powiązanych asocjacjami Techniki optymalizacji

2 Popularne implementacje technologii odwzorowania obiektowo-relacyjnego dla aplikacji Java: Hibernate (Open Source) Oracle Toplink (rozwiązanie firmowe Oracle) JDO (Java Data Objects - specyfikacja firmy Sun) JPA (Java Persistence API) O Hibernate Hibernate - Jeden z najlepiej ocenianych frameworków do realizacji warstwy dostępu do danych (ang. persistance layer). Zapewnia on przede wszystkim translację (ang. O/R mapping) danych pomiędzy relacyjną bazą danych a światem obiektowym. Opiera się na wykorzystaniu opisu struktury danych za pomocą języka XML, dzięki czemu można "rzutować" obiekty, stosowane w obiektowych językach programowania, takich jak Java bezpośrednio na istniejące tabele bazy danych. Dodatkowo Hibernate zwiększa wydajność operacji na bazie danych dzięki buforowaniu i minimalizacji liczby przesyłanych zapytań. Jest to projekt rozwijany jako open source. Głównym inicjatorem i liderem projektu jest Gavin King. Według dokumentacji celem Hibernate jest zwolnienie projektanta aplikacji z konieczności ręcznego kodowania 95% zadań związanych z zapewnieniem trwałości danych. Hibernate jest najbardziej odpowiedni dla aplikacji Java pracujących w warstwie pośredniej Hibernate jest tworzony przez firmę Jboss. Możemy go pobrać ze strony Dystrybucja zawiera bibliotekę Hibernate i wykorzystywane przez nią biblioteki od innych dostawców (znajdujące się w katalogu /lib).hibernate został podzielony na kilka części: Hibernate Core - podstawowa część biblioteki, wykonująca większość pracy, Hibernate Annotations - element pozwalający zastąpić większą część konfiguracji Hibernate, budowanej do tej pory w XML, poprzez adnotacje w kodzie napisane z użyciem Javy 5. Hibernate Tools które zawierają rozmaite wtyczki (plug-ins) dla Anta oraz darmowego środowiska Eclipse IDE.Wtyczka Hibernate Tools dla Eclipse oferuje: Edytor odwzorowań (uzupełnianie i kolorowanie kodu) Konsolę Hibernate (przegląd konfiguracji, klas, itp. oraz interaktywne zapytania HQL Kreatory i generatory kodu (w tym kompletny reverse-engineering istniejącego schematu bazy danych)

3 Zalety Hibernate: Najpopularniejsza obecnie implementacja odwzorowania obiektowo-relacyjnego dla Javy( pobrań/miesiąc) Dużo materiałów i pomocy w Internecie Udział twórców Hibernate w pracach nad specyfikacją EJB 3.0 Open source (Rozpowszechniany na licencji FSF Lesser GNU Public License) Wsparcie dla stylu programowania odpowiedniego dla Javy (Hibernate: Relational Persistence For Idiomatic Java) Obsługa asocjacji, kompozycji, dziedziczenia, polimorfizmu, kolekcji Wysoka wydajność i skalowalność Dual-layer cache, możliwość wykorzystania w klastrze UPDATE tylko dla zmodyfikowanych obiektów i kolumn Własne API Możliwość stworzenia dużej bazy bez większego wkładu pracy Pozwala uniknąć ręcznego zarządzania danymi na poziomie SQL i JDBC Będzie wykorzystane w JBoss CMP 2.0 engine Nie ma potrzeby implementowania interfejsów Korzystamy z możliwości SQL bez wychodzenia poza granicę języka Java Wiele sposobów wydawania zapytań: HQL własne przenaszalne rozszerzenie SQL Natywny SQL Zapytania przez obiekty Javy: Criteria i Example Dowolna klasa może być klasą reprezentującą encję Wygodne i intuicyjne mapowanie plików struktury XML na klasy Mniej kodu = mniej błędów Optymalna wydajność Trwałość dla JavaBeans Wsparcie dla bardzo rozwiniętych modeli obiektowych Rozbudowane zapytania Jeden krok dalej od zwykłego wykorzystania JDBC Ogólna architektura Hibernate: Hibernate stanowi warstwę abstrakcji pośredniczącą w komunikacji aplikacji z bazą danych, obsługując trwłaość obiektów aplikacji.opcje konfiguracyjne Hibernate, takie jak np. parametry

4 połączenia z bazą danych zawiera plik konfiguracyjny Hibernate, który może mieć postać pliku.properties (o nazwie hibernate.properties) lub, co jest wygodniejsze, postać pliku XML (o nazwie hibernate.cfg.xml).obsługując trwałość obiektów,hibernate wykorzystuje informacje o odwzorowaniu obiektowo-relacyjnym modelu danych aplikacji zawarte w plikach XML. Szczegółowa architektura Hibernate:

5 Interfejsy Hibernate w poszczególnych warstwach: Interfejsy Hibernate przedstawione na rysunku można podzielić następująco: - Interfejsy wywoływane przez aplikacje w celu wykonania prostych operacji CRUD i wyszukiwania. Interfejsy te stanowią główny punkt styku logiki biznesowej z Hibernate. Zawierają interfejsy: Session, Transaction i Query. - Interfejsy wywoływane przez kod infrastruktury aplikacji w celu konfiguracji Hibernate. Jest to przede wszystkim klasa Configuration. - Interfejsy wywołań zwrotnych pozwalające aplikacji reagować na zdarzenia zachodzące wewnątrz Hibernate. Są to interfejsy: Interceptor, Lifecycle i Validatable. - Interfejsy zapewniające rozszerzanie rozbudowanej funkcjonalności odwzorowania w Hibernate. Są to interfejsy: UserType, CompositeUserType i IdentifierGenerator. Interfejsy te implementuje kod infrastruktury aplikacji (jeśli to konieczne). Hibernate wykorzystuje istniejące interfejsy programistyczne Javy, włączając w to JDBC, JTA (Java Transaction API) oraz JNDI (Java Naming and Directory Interface). JDBC zapewnia odpowiedni poziom abstrakcji funkcji wspólnych dla różnych systemów relacyjnych baz danych, co oznacza, że Hibernate potrafi skorzystać z dowolnej bazy danych ze sterownikiem JDBC. Interfejsy podstawowe Pięć interfejsów podstawowych pojawia się w niemal każdej aplikacji wykorzystującej Hibernate. Dzięki nim możliwe staje się pobieranie i zapamiętywanie trwałych obiektów oraz sterowanie transakcjami. Interfejs Session Interfejs Session to główny interfejs każdej aplikacji Hibernate. Egzemplarze Session są lekkie koszt ich utworzenia i zniszczenia bywa niewielki. Jest to niezwykle istotne, bo każda aplikacja

6 cały czas tworzy i usuwa coraz to nowe sesje, prawdopodobnie przy każdym nowym żądaniu. ObiektSession reprezentuje jednostkę pracy ( unit of work ),jest tworzony dla pojedynczego procesu.znaczenie sesji Hibernate można opisać jako coś pomiędzy połączeniem i transakcją. Najprościej traktować sesję jako bufor lub kolekcję załadowanych obiektów powiązanych z jedną jednostką zadaniową. Hibernate potrafi wykryć zmiany w obiektach tej jednostki zadaniowej. Często interfejs Session nazywa się zarządcą trwałości, gdyż zapewnia dostęp do podstawowych operacji trwałości takich jak zapis i pobieranie obiektów. Warto podkreślić, że sesja Hibernate nie ma nic wspólnego z sesją warstwy połączenia internetowego, na przykład HttpSession. Interfejs SessionFactory Interfejs SessionFactory został zaprojektowany z myślą o współdzieleniu przez wiele wątków aplikacji. Najczęściej na całą aplikację występuje tylko jeden obiekt SessionFactory tworzony w momencie jej inicjalizacji. Jeśli jednak aplikacja korzysta z kilku baz danych w połączeniu z Hibernate, potrzeba osobnego obiektu SessionFactory dla każdej bazy danych. Obiekt SessionFactorysuży dotworzenia obiektówsession, poprzez które następnie realizowana jest komunikacja z bazą danych. Obiekt SessionFactory buforuje wygenerowane polecenia SQL i inne meta-dane odwzorowania stosowane przez Hibernate w trakcie działania aplikacji. Dodatkowo buforuje dane, które zostały odczytane w jednej jednostce zadaniowej i mogłyby przydać się w innej jednostce zadaniowej. Interfejs Configuration Obiekt Configuration służy do konfiguracji i uruchomienia Hibernate. Aplikacja używa egzemplarza Configuration do wskazania położenia dokumentów odwzorowań i właściwości specyficznych dla Hibernate. Interfejs Transaction Interfejs Transaction jest opcjonalny. Aplikacje Hibernate nie muszą z niego korzystać, jeśli chcą zarządzać transakcjami we własnym zakresie. Interfejs Transaction oddziela aplikację od implementacji transakcji,tzn. stara się ukryć szczegóły implementacji konkretnych mechanizmów transakcyjnych: JDBC, klasy UserTransaction z JTA.W ten sposób zapewnia aplikacji jednorodny sposób ich obsługi. Ułatwia to zachowanie przenośności aplikacji Hibernate między różnymi środowiskami wykonywania i kontenerami. Często w sesji występuje tylko jedna transakcja, ale możliwe wiele kolejnych transakcji w jednej sesji. Hibernate nie pozwala na tryb auto-commit. Interfejsy Query i Criteria Interfejs Query umożliwia wysyłanie zapytań do bazy danych i sterowanie procesem ich wykonywania. Zapytania pisze się w języku HQL lub też w odpowiednim dla danej bazy danych dialekcie SQL. Egzemplarz Query odpowiada za dowiązanie parametrów zapytania, ograniczenie liczby zwracanych wyników i wykonanie zapytania. Interfejs Criteria jest bardzo podobny. Umożliwia utworzenie i wykonanie obiektowych kryteriów wyszukiwania. Egzemplarz Query nie daje się zastosować poza egzemplarzem Session, dla którego powstał. Interfejsy wywołań zwrotnych Interfejsy wywołań zwrotnych umożliwiają aplikacji otrzymywanie powiadomień, gdy coś ciekawego stanie się ze sprawdzanym obiektem na przykład zostanie załadowany, zapisany lub usunięty. Aplikacje stosujące Hibernate nie muszą korzystać z wywołań zwrotnych, ale niejednokrotnie przydają się one do tworzenia ogólnej funkcjonalności, na przykład automatycznego tworzenia zapisów audytorskich. Interfejsy Lifecycle i Validatable zapewniają trwałym obiektom reakcję na zdarzenia związane z własnym cyklem życia trwałego. Cykl życia ma nierozerwalny związek z operacjami CRUD obiektu. Interfejs Interceptor wprowadzono, by aplikacje mogły przetwarzać wywołania zwrotne bez potrzeby wprowadzania implementacji interfejsów Hibernate do klas trwałości. Implementacje

7 interfejsu Interceptor wprowadza się do egzemplarzy trwałych klas jako parametry. Warstwa prezentacji Klientem może być samodzielna aplikacja napisana w Javie, instalowana na komputerze (thick client), aplikacja zbudowana w oparciu o strony WWW z, której korzystamy poprzez przeglądarkę internetową z dowolnego miejsca (thin client), lub aplikacja dla urządzeń mobilnych napisana w Javie (Java 2 Micro Edition). Warstwa biznesowa Warstwa zawierająca całą logikę biznesową aplikacji. Umożliwia dostęp do źródeł danych, integracje nowego systemu w technologii J2EE z istniejącymi systemami informatycznymi w przedsiębiorstwie. Warstwa osłania system informatyczny przed warstwą prezentacji widoczną przez klienta. Warstwa biznesowa może być niezależna od technologii w jakiej została zrealizowana warstwa danych. Warstwa danych Warstwa danych zapewnia trwałość danych dla aplikacji. Trwałość może być realizowana przez relacyjną bazę danych, system katalogowy, system plików, czy obiektową bazę danych. Architektura wielowarstwowa znaczne upraszcza proces projektowania, tworzenia oraz wdrażania rozwiązań biznesowych. Kod aplikacji używa interfejsów programistycznych Session i Query z Hibernate do wykonywania operacji trwałości danych.zajmuje się również zarządzaniem transakcjami, używając interfejsu Transaction z Hibernate. Obiekt zapytania jest tworzony metodą createquery() obiektu Session. Zatwierdzenie transakcji następuje po wywołniu metody commit() obiektu Transaction (do wycofania transakcji służy metoda rollback()) Wyniki zapytania zostają zwrócone jako kolekcja typu List metodą list()obiektu Query. Pula połączeń określa liczbę połączeń, jakie mogą zostać nawiązane, dodatkowo odpowiada za zarządzanie połączeniami. Hibernate potrafi zintegrować się z dowolną pulą połączeń, sam tworzy pule połączeń po podaniu wymaganych parametrów. Plik konfiguracyjny informuje, w jaki sposób Hibernate może uzyskać (lub utworzyć nowe) połączenia JDBC. Ogólnie nie zaleca się tworzenia połączeń za każdym razem, gdy tylko chce się skorzystać z bazy danych, ponieważ uzyskiwanie nowych połączeń oraz utrzymywanie wielu niewykorzystywanych połączeń jest kosztowne.

8 Stany obiektów w Hibernate W Hibernate mamy następujące stany obiektów: Transient (ulotny) W Hibernate obiekty utworzone operatorem new nie stają się automatycznie trwałe. Ich stan jest ulotny, czyli nie są związane z żadnym wierszem bazy danych. Znikną, gdy tylko przestanie istnieć referencja do nich w całej aplikacji. Cykl życia obiektów tego typu jest ściśle związany z ich dostępnością. Kończy się, gdy przestają być dostępne i mogą zostać usunięte przez mechanizm odzyskiwania pamięci. Hibernate traktuje wszystkie egzemplarze ulotne jako nietransakcyjne tzn, że modyfikacja stanu takiego obiektu nie wykonuje się w kontekście żadnej transakcji. Persistent (trwały) Obiekt trwały to dowolny egzemplarz o tożsamości bazodanowej. Obiekt trwały mógł zostać utworzony przez aplikację, a następnie uczyniony trwałym przez wywołanie metody save() zarządcy trwałości (obiektu Session).Po tej operacji obiekt jest związany z sesją. Ewentualnie egzemplarz obiektu trwałego może powstać na podstawie informacji z bazy danych uzyskanych w wyniku wykonania zapytania, wyszukania identyfikatora lub przejścia do niego przez graf obiektów z innego obiektu. Innymi słowy, obiekty trwałe zawsze mają związek z obiektem Session i są transakcyjne. Hibernate wykrywa zmiany dokonane na trwałych obiektach i synchronizuje ich stan z bazą danych na końcu transakcji. Oprogramowanie ORM musi wykrywać, które z obiektów trwałych zmieniły się w czasie trwania transakcji. Sprawdzenie to nosi nazwę automatycznego sprawdzania zabrudzenia (obiekt z modyfikacjami, które nie zostały jeszcze zapisane w bazie danych, traktuje się jako brudny). W momencie zatwierdzania transakcji stan obiektu znajdujący się w pamięci trafia do bazy danych w wyniku wykonania polecenia INSERT, UPDATE lub DELETE. Obiekt trwały może stać się ulotnym po wywołaniu metody delete() interfejsu zarządcy trwałości powodującej usunięcie z bazy danych wiersza z danymi obiektu.

9 Detached (odłączony) W skrócie można powiedzieć, że jest to obiekt, który był trwały, ale jego sesja zakończyła się. W Hibernate w momencie wywołania metody close() obiektu Session egzemplarze tracą połączenie z zarządcą trwałości. Obiekty te uważa się za odłączone, gdyż nie gwarantuje się synchronizacji ich danych z informacjami w bazie danych, bo nie są od tego momentu zarządzane przez Hibernate. Hibernate dopuszcza ponowne użycie obiektu w nowej transakcji przez jego powiązanie z nowym zarządcą (po przypisaniu obiekt ponownie traktuje się jako trwały). Ta cecha w znaczącym stopniu wpływa na sposób projektowania aplikacji wielowarstwowych. Możliwość zwrócenia obiektów z jednej transakcji do warstwy prezentacji i ponowne użycie ich w innej transakcji stanowi jeden z głównych powodów popularności Hibernate. Hibemate jawnie udostępnia również operację odłączenia metodę evict() obiektu Session. Stosuje się ją jednak głównie w zarządzaniu buforami (ze względów wydajnościowych). Dokonanie jawnego odłączenia nie jest operacją typową. Wszystkie obiekty pobrane w trakcie trwania transakcji są niejawnie odłączane w momencie zamykania sesji lub w momencie ich serializacji (na przykład w celu przesłania do innego komputera). Przykłady Zapisu i odczytu obiektu do/z bazy danych: SessionFactory sf = new Configuration().configure().buildSessionFactory(); Session s = sf.opensession(); // rozpoczęcie sesji Transaction tx = s.begintransaction(); // rozpoczęcie transakcji Uczynienie nowego obiektu trwałym: Osoba o= new Osoba(); o.setimie("zbigniew"); o.setnazwisko("boniek"); s.save(o); // zapis obiektu do bazy danych tx.commit(); // zatwierdzenie transakcji (wycofanie: tx.rollback()) s.close(); // zakończenie sesji Odczyt obiektu o znanym identyfikatorze: Osoba o = (Osoba) s.load(osoba.class, new Long(20)); System.out.println(o.getImie()); Osoba o = (Osoba) s.get(osoba.class, new Long(20)); System.out.println(o.getImie()); //Wyjątek gdy błędny klucz // Zwraca null gdy błędny klucz Usuwanie obiektu: s.delete(o); // obiekt stanie się ulotny,ale referencja może zostać Modyfikacja trwałego obiektu (w czasie otwartej sesji Session s): o.setnazwisko("smolarek"); s.flush(); // jeśli zmiany mają natychmiast powędrować do bazy

10 Elementy Hibernate: Trwałe klasy (Persistent classes): Trwałe klasy to klasy w aplikacji, które implementują encje występujące w reprezentowanej rzeczywistości: Np. Osoba,Użytkownik,Klient, Faktura Nie wszystkie instancje trwałej klasy muszą być trwałe public class Osoba { private Long id; private String imie; private String nazwisko; Możliwa odpowiadająca tabela w bazie danych: public Osoba() { public void setid(long id) { this.id = id; public Long getld() { return id; public void setimie(string imie) { this.imie = imie; public String getimie() { return imie; public void setnazwisko(string nazwisko) { this. nazwisko = nazwisko; public String getnazwisko () { return nazwisko; Hibernate najlepiej działa z klasami spełniającymi reguły POJO (Plain Old Java Object) Reguły POJO dla Hibernate są następujące: Metody set/get (accessor/mutator)(metody dostępowe) dla trwałych atrybutów klasypól w tabeli, dzięki którym mamy dostęp do prywatnych pól klasy Bezargumentowy konstruktor (może być domyślny)-jest wymagany przez Hibernate do tego, aby klasa mogła być utrwalana w bazie. Identyfikator (opcjonalnie) Oprócz domyślnego konstruktora dla każdej klasy, możemy dostarczyć także konstruktor umożliwiający bezpośrednie przypisanie pól innych niż klucze podstawowe. Dzięki temu możemy stworzyć i wypełnić obiekt w jednej czynności zamiast kilku. Klasa nie może być zadeklarowana jako final Może być final, ale w pewnych przypadkach może to np. ograniczać możliwości strojenia wydajności Hibernate może wewnętrznie zarządzać identyfikatorami obiektu (ale jest to niezalecane) Odwzorowanie obiektowo-relacyjne, czyli pliki mapujące (*.hbm.xml):

11 Odwzorowanie definiowane jest w pliku XML.W zasadzie nazwa pliku i jego umiejscowienie w strukturze plików nie jest istotne, jednakże przyjęło się, że każda klasa, która będzie obsługiwana przez Hibernate, powinna posiadać swój własny plik mapowania, który znajduje się w katalogu odpowiadającym pakietowi mapowanej klasy z nazwą odpowiadającą nazwie klasy z rozszerzeniem hbm.xml. Język do opisu odwzorowania jest zorientowany na Javę, tzn że odwzorowanie budujemy z punktu widzenia klasy Java a nie tabeli. Dokumenty opisujące odwzorowanie można tworzyć ręcznie lub korzystać z dostępnych narzędzi: - Generujących odwzorowanie z POJO (np. Xdoclet) - Generujących POJO i odwzorowanie z tabel bazy danych na zasadzie reverse engineering (np. Hibernate Tools) Dokumenty opisujące odwzorowanie są wskazywane w pliku konfiguracyjnym hibernate.cfg.xml (lub też programowo w aplikacji): <?xml version='1.0'encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" " <hibernate-configuration> <session-factory> <mapping resource="hib/osoba.hbm.xml"/> // Ścieżka do pliku z odwzorowaniem </session-factory> </hibernate-configuration> Odwzorowane klasy muszą deklarować klucz główny tabeli co jest realizowane poprzez element <id>.istnieje możliwość stosowania złożonych kluczy głównych z Hibernate, odwzorowanych przez <composite-id>, ale nie jest to zalecane.nazwa pola jest określona poprzez atrybut name a nazwa kolumny w tabeli poprzez atrybut column. Zalecane jest stosowanie sztucznego identyfikatora, typu nie-prostego (możliwość przypisania null).klucz zastępczy jest to dowolna wartość (zazwyczaj liczbowa) o typie danych zależnym od liczby spodziewanych obiektów (np. 32-bitowy, 64-bitowy, etc.). Poza bazą danych klucz zastępczy nic nie znaczy nie jest to ani numer klienta, ani numer telefonu, ani nic innego. Z tego względu, jeśli jakaś decyzja biznesowa duplikuje dotychczas niepowtarzalne dane, nie spowoduje to problemów, ponieważ biznesowe nie tworzą klucza podstawowego. W definicji identyfikatora występuje element opisujący sposób generacji jego wartości <generator>.może on przyjmować następujące wartości: assigned: aplikacja musi wypełnić wartość (strategia domyślna) increment: generacja programowa (działa gdy jeden proces w danej chwili może wstawiać wiersz do tabeli) hilo: Generuje niepowtarzalne wartości typu long wykorzystując algorytm HIGH-LOW. native: wartości klucza mają być generowane domyślnym natywnym sposobem dla wykorzystywanej bazy danych.(identity, sequence, hilo) identity: wsparcie dla automatycznie generowanych wartości kolumny w DB2, MySQL, MS SQL Server, Sybase and HypersonicSQL (np. AUTO_INCREMENT w MySQL) sequence: generuje niepowtarzalną wartość wykorzystując konstrukcję SEQUENCE dostępną w bazach danych DB2, Interbase, Oracle, PostgreSQL i SAP DB. select: pobiera wartość ustawioną przez wyzwalacz (trigger) w bazie danych. Możliwe typy danych w Hibernate: integer, long, short, float, double, character, byte, boolean (BIT), yes_no (CHAR(1): Y/N), true_false (CHAR(1): T/F): odwzorowanie typów prostych Javy na

12 odpowiednie typy SQL (vendor-specific) string: odwzorowanie java.lang.string na VARCHAR (w Oracle VARCHAR2) date, time, timestamp: odwzorowanie java.util.date na DATE, TIME, TIMESTAMP big_decimal, big_integer: odwzorowanie z java.math.bigdecimal i java.math.biginteger na NUMERIC (w Oracle NUMBER) calendar, calendar_date, locale, timezone, currency, class, binary, text, serializable, clob, blob. Element property może przyjmować następujące wartości: name="nazwa_atrybutu" column="nazwa_kolumny" // Nazwa kolumny w bazie danych - domyślnie = name type="typ_danych" update="true false" // Domyślnie true (false dla pól wyliczeniowych) insert="true false" formula="arbitrarysqlexpression" access="field property ClassName" lazy="true false" // włącza tryb lazy fetching unique="true false" not-null="true false" // Domyślnie false optimistic-lock="true false" generated="never insert always" element/@attribute." index="nazwa_indeksu" unique_key="unique_key_id" length="l" precision="p" scale="s" Przykładowy plik - Osoba.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" " <hibernate-mapping package="hib"> <class name="osoba" table="osoba"> // Odwzorowanie klasy na tabelę <id name="id" type="long" column="numosob"> // Definicja identyfikatora </id> <generator class="sequence"/> <param name="sequence">osob_seq</param> </generator> <property name="imie" column="imie" // Nazwa kolumny w bazie danych - domyślnie = name type="string" // Typ danych Hibernate not-null="true" // Domyślnie false update="true" insert="true"/> // Domyślnie true (false dla pól wyliczeniowych) <property name= nazwisko column= Nazwisko type= string /> </class> </hibernate-mapping>

13 Konfigurację można zapisać w pliku XML bądź, za pomocą adnotacji w kodzie Java. Ten drugi sposób jest zdecydowanie wygodniejszy, szczególnie gdy nie przewidujemy częstych zmian w = "Osoba") public class @Column(name = "Num_osob") private Long = "Imie") private String = "Nazwisko") private String nazwisko; określa klasę encji.encja(ang.entity) to lekki obiekt służący do reprezentacji trwałych danych. Typowo encja reprezentuje tabelę z relacyjnej bazy danych, ale istnieje również możliwość odwzorowania encji na kilka tabel. Encja definiowana jest w formie klasy encji. Niekiedy klasa encji jest uzupełniana o klasy pomocnicze np. klasę definiującą strukturę złożonego klucza oznacza, że pole jest kluczem informuje że poszczególne wartości pola mają być automatycznie generowane, definiuje nazwę kolumny w tabeli (Osoba), z którą dane pole ma być powiązane. Rodzaje konfiguracji (hibernate.properties lub hibernate.cfg.xml): Hibernate możemy skonfigurować na dwa sposoby: Plik właściwości hibernate.properties Jeśli właściwości zadeklaruje się w pliku hibernate.properties, wystarczy umieścić ten plik w ścieżce wyszukiwania klas aplikacji. Zostanie on automatycznie wykryty i wczytany przez Hibernate w momencie tworzenia obiektu Configuration. Przykładowy plik Hibernate.properties hibernate.connection.driver_class=org.hsqldb.jdbcdriver (1) hibernate.connection.url=jdbc:hsqldb:file:testdb (2) hibernate.connection.username= user hibernate.connection.password= tajne hibernate.show_sql=false hibernate.dialect=org.hibernate.dialect.hsqldialect hibernate.c3p0.min_size=5 (3) hibernate.c3p0.max_size=20 (4) hibernate.c3p0.timeout=300 (5) (1) Nazwa klasy Javy implementująca sterownik JDBC dla konkretnej bazy danych(klasa Driver).Plik jar sterownika musi znajdować się w ścieżce wyszukiwania klas. (2) Adres URL w formacie jdbc określający adres serwera i nazwę bazy danych dla połączeń JDBC (3)Minimalna liczba oczekujących na działania połączeń JDBC utrzymywanaprzez C3P0. (4)Maksymalna liczba połączeń w puli. Zostanie zgłoszony wyjątek wykonania, gdy wartość ta okaże się niewystarczająca. (5)Okres bezczynności podawany w sekundach, więc w przykładzie jest to 5 minut. Po tym okresie nieużywane połączenie zostaje usunięte z puli. Określanie właściwości w postaci hinernate.c3p0.* powoduje automatyczne wybranie biblioteki C3P0 jako rozwiązania puli połączeń dla Hibernate (nie potrzeba żadnej dodatkowej opcji w celu włączenia C3P0).

14 Plik ten nie zawiera odwzorowań zasobów z pliku XML i nie można zamieścić tej informacji w pliku właściwości. Jeżeli w ten sposób chcemy skonfigurować Hibernate, należy odwzorować klasy do obiektu Configuration w czasie wykonania: Configuration config = new Configuration(); config.addresource("osoba.hbm.xml"); config.addclass( katalog.osoba.class ); config.setproperties( System.getProperties() ); SessionFactory sessions = config.buildsessionfactory(); Plik konfiguracyjny hibernate.cfg.xml Konfiguracja poprzez plik hibernate.cfg.xml jest najczęściej wykorzystywanym sposobem. Wiele osób preferuje właśnie w ten sposób, by uniknąć dodawania parametrów do obiektu Configuration w kodzie aplikacji. Metoda odszukiwania pliku przez Hibernate polega na przeszukaniu CLASSPATH(ścieżki wyszukiwania klas). Podczas budowania projektu, należy pamiętać o umieszczeniu pliku hibernate.cfg.xml do odpowiedniego katalogu, który jest włączony do CLASSPATH. W odróżnieniu od pliku hibernate.properties, który zawiera tylko parametry konfiguracyjne plik hibernate.cfg.xml może również określać lokalizację plików odwzorowań. Na początku pliku występuje deklaracja typu dokumentu, która pomaga analizatorowi XML dokonać walidacji dokumentu, czyli sprawdzić zgodność jego formatu z wytycznymi zawartymi w DTD pliku konfiguracyjnego Hibernate. Konfiguracja Hibernate jest zawarta w elemencie głównym <hibernate-configuration>. Natomiast parametry konfiguracyjne dla konkretnej bazy danych są zawarte w elemencie <session-factory>. Parametry połączenia z bazą danych są zawarte w poszczególnych elementach <property>, a pliki z opisem odwzorowania klas Java na tabele w bazie danych wskazane w elementach <mapping>.ważnym parametrem jest wskazanie dialektu SQL dla wykorzystywanej bazy danych (w przykładzie użyty jest dialekt bazy danych Oracle). Ustawienie tego parametru powoduje przyjęcie domyślnych wartości wielu innych parametrów, odpowiednich dla danej bazy danych. Hibernate SQL Dialects (hibernate.dialect): Nazwa: Dialect: DB2 org.hibernate.dialect.db2dialect DB2AS/400 org.hibernate.dialect.db2400dialect DB2OS390 org.hibernate.dialect.db2390dialect PostgreSQL org.hibernate.dialect.postgresqldialect MySQL org.hibernate.dialect.mysqldialect MySQLwithInnoDB org.hibernate.dialect.mysqlinnodbdialect MySQLwithMyISAM org.hibernate.dialect.mysqlmyisamdialect Oracle(anyversion) org.hibernate.dialect.oracledialect Oracle9i/10g org.hibernate.dialect.oracle9dialect Sybase org.hibernate.dialect.sybasedialect SybaseAnywhere org.hibernate.dialect.sybaseanywheredialect MicrosoftSQLServer org.hibernate.dialect.sqlserverdialect SAPDB org.hibernate.dialect.sapdbdialect Informix org.hibernate.dialect.informixdialect HypersonicSQL org.hibernate.dialect.hsqldialect Ingres org.hibernate.dialect.ingresdialect Progress org.hibernate.dialect.progressdialect

15 MckoiSQL org.hibernate.dialect.mckoidialect Interbase org.hibernate.dialect.interbasedialect Pointbase org.hibernate.dialect.pointbasedialect FrontBase org.hibernate.dialect.frontbasedialect Firebird org.hibernate.dialect.firebirddialect Przykładowy plik Hibernate.cfg.xml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" " <hibernate-configuration> <session-factory> <property name="connection.driver_class">org.hsqldb.jdbcdriver</property> <property name="connection.url">jdbc:hsqldb:</property> <property name="connection.username">user</property> <property name="connection.password">tajne</property> <property name="dialect">org.hibernate.dialect.hsqldialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">create</property> <mapping resource="osoba.hbm.xml"/> </session-factory> </hibernate-configuration> Połączenia z bazą danych możemy określać poprzez DriverManager: <property name="connection.driver_class">org.hsqldb.jdbcdriver</property> lub też poprzez DataSource podając źródło danych: <property name="connection.datasource">jdbc:hsqldb/nazwa_bd</property> Parametr <show_sql> jest parametrem, na który należy kłaść duży nacisk. Przydaje on się wielokrotnie, gdy tworzy się oprogramowanie. Ustawienie właściwości hibernate.show_sql na wartość true włącza wyświetlanie wszystkich utworzonych poleceń SQL na konsoli. Warto korzystać z tej opcji w momencie poszukiwania błędów, poszukiwania wąskiego gardła lub po prostu analizy działania Hibernate. Z kolei parametr <hbm2ddl.auto> umożliwia tworzenie struktury bazy danych przy starcie aplikacji (gdy hbm2ddl.auto wynosi create). Po przetestowaniu aplikacji parametr hbm2ddl.auto zaleca się ustawić na validate, albo po prostu wyłączyć poprzez usunięcie, czy zakomentowanie linii zawierającej parametr. Do inicjalizacji Hibernate wystarczy teraz użycie następującego kodu: SessionFactory sessions = new Configuration().configure().buildSessionFactory(); W momencie wywołania metody configure() Hibernate poszukuje pliku o nazwie hibernate.cfg.xml w ścieżce wyszukiwania klas. Jeśli chce się dla pliku konfiguracyjnego zastosować inną nazwę lub też plik znajduje się w niestandardowej lokalizacji, do metody configure() należy przekazać ścieżkę. SessionFactory sessions = new Configuration().configure("/hibernate-config/przyklad.cfg.xml").buildSessionFactory(); Jeśli ścieżka wyszukiwania klas zawiera pliki hibernate.properties i hibernate.cfg.xml, ustawienia występujące w pliku XML nadpiszą ustawienia z pliku właściwości. Rodzaje zapytań w Hibernate

16 Zapytania w języku HQL (Hibernate QueryLanguage): składnia podobna do SQL zorientowany obiektowo zapytania odwołują się do klas, a nie tabel Podstawowym sposobem odczytu danych z bazy danych w Hibernate są zapytania formułowane w języku HQL (Hibernate Query Language). Język ten pod względem składni bardzo przypomina SQL. Podstawowa struktura zapytania to SELECT-FROM-WHERE-GROUP BY-HAVING- ORDER BY, z tym że klauzula SELECT jest opcjonalna, gdy mają by odczytane całe obiekty. HQL w odróżnieniu od SQL jest zorientowany obiektowo i operuje na klasach języka Java,a nie tabelach relacyjnej bazy danych. HQL obsługuje dziedziczenie,polimorfizm i asocjacje między klasami. 1) wykonanie zapytań poprzez list() - zwraca cały wynik zapytania do kolekcji w pamięci (instancje pozostają w stanie trwałym): List osoby= (List) session.createquery("from Osoba as osoba where osoba.imie= 'Zbigniew'").list(); for (int i=0; i<osoby.size(); i++) System.out.println(((Osoba)osoby.get(i)).getImie()); List osoby = (List)s.createQuery("select Osoba.id, Osoba.imie from Osoba as osoba where Osoba.nazwisko = 'Boniek'").list(); for (int i=0; i<osoby.size(); i++) { Object [ ] tab = (Object [ ]) osoby.get(i); System.out.println(tab[0]+" "+tab[1]); 2) wykonywanie zapytań poprzez iterate() - zwraca wynik w kilku zapytaniach SELECT: -Pobiera identyfikatory -Oddzielne zapytania pobierające poszczególne instancje -Może być efektywniejsze od list(), gdy instancje już są w pamięci podręcznej, ale rozwiązanie to jest zazwyczaj wolniejsze. Iterator osoby = s.createquery("from Osoba as osoba where osoba.nazwisko = 'Boniek'").iterate(); while (osoby.hasnext()) { Osoba o = (Osoba) osoby.next(); System.out.println(o.getImie()); 3) Pobieranie obiektów z bazy danych: Domyślnie w przypadku operacji połączenia, HQL nie pobiera natychmiast związanych obiektów i kolekcji.są one pobierane gdy nastąpi do nich pierwsze odwołanie (tryb lazy fetching ).Dla wszystkich typów zbiorów, poza tablicami, można włączyć późne ładowanie wykorzystując zapis lazy = "true". Zastosowanie późnego ładowania umożliwia znaczne przyspieszenie szybkości działania aplikacji, szczególnie takich operacji, jak wyszukiwanie. Domyślnie tryb lazy jest ustawiony dla Pobranie encji następuje dopiero przy próbie odwołania się do niej, np odczyt z kolekcji. Leniwe (opóźnione )pobieranie pól obiektów może być przydatne tylko wtedy, gdy mamy w nich dużo danych i chcemy zaoszczędzić pracy zbieraczowi nieużytków (garbage collection). Z kolei dla domyślnym rozwiązaniem jest tzw. eager fetching czyli natychmiastowe ładowanie.hql ignoruje ewentualne ustawienia podane przy odwzorowaniu.stanowi to problem, gdy odwołanie do dowiązanego obiektu lub kolekcji nastąpi po

17 zamknięciu sesji, w której wykonano zapytanie.rozwiązaniem jest zastosowanie klauzul (działają dla list()): - INNER JOIN FETCH - dla pobrania pojedynczych obiektów - LEFT JOIN FETCH - dla pobrania kolekcji from Dept as dept left join fetch dept.emps as emp from Emp as emp inner join fetch emp.dept Zapytania w natywnym SQL, dające możliwość wykorzystania specyficznych dla danego systemu konstrukcji składniowych np. CONNECT w Oracle. Zapytania poprzez obiekty Criteria, umożliwiające budowę zapytań poprzez obiektowe API Zapytania poprzez obiekty Example, umożliwiające wyszukiwanie danych w oparciu o przykadową instancję (mechanizm QBE QueryByExample). Reverse Engineering (podejście z dołu do góry ) W podejściu z dołu do góry tworzenie oprogramowania rozpoczyna się od istniejącego schematu bazy danych i modelu danych. W tym przypadku najwygodniej jest najpierw skorzystać z narzędzia Middlegen do wygenerowania plików odwzorowań Hibernate na podstawie istniejącej bazy danych, a następnie uruchomić narzędzie hbm2java do wygenerowania szkieletu klas trwałych POJO. Narzędzie hbm2java stosuje się do: - generowania kodu źródłowego klas POJO na podstawie plików odwzorowań Hibernate przy podejściu od środka, - generowania kodu źródłowego klas POJO na podstawie plików odwzorowań Hibernate uzyskanych automatycznie narzędziem Middlegen z istniejącego schematu bazy danych. Narzędzie można dostosować do własnych potrzeb, korzystając na przykład z dodatkowych metadanych (jak to miało miejsce w narzędziu hbm2ddl). Najczęściej wygenerowane pliki i klasy trzeba poprawiać i rozszerzać ręcznie, ponieważ nie wszystkie asocjacje klas i szczegóły metadanych można określić automatycznie na podstawie schematu bazy danych.

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

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

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

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

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

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

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

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

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

Hibernate mapowanie baz danych

Hibernate mapowanie baz danych Hibernate mapowanie baz danych Jest to technologia pozwalająca mapować dane obiektowe na odpowiadające im struktury w bazach danych. ORM - Object-to-Relational Mapping. Jest odpowiedzią na znikomą ilość

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

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

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

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

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

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego www.math.uni.lodz.pl/ radmat radmat@math.uni.lodz. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego www.math.uni.lodz.pl/ radmat radmat@math.uni.lodz.pl Konwersja i walidacja W wyniku działania konwersji i walidacji surowe dane, przesyłane w postaci

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

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

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

Automatyczne generowanie kodu. Marek.Berkan@e-point.pl. 4Developers, 26 marca 2010

Automatyczne generowanie kodu. Marek.Berkan@e-point.pl. 4Developers, 26 marca 2010 4Developers, 26 marca 2010 Zakres wykładu O czym zamierzam opowiedzieć: Przyspieszenie tworzenia aplikacji Ułatwienie utrzymania aplikacji Budowanie kontraktów pomiędzy developerami a innymi uczestnikami

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

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

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

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

Baza danych sql. 1. Wprowadzenie

Baza danych sql. 1. Wprowadzenie 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 edytora graficznego struktury bazy danych, który

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

Wykład I. Wprowadzenie do baz danych

Wykład I. Wprowadzenie do baz danych Wykład I Wprowadzenie do baz danych Trochę historii Pierwsze znane użycie terminu baza danych miało miejsce w listopadzie w 1963 roku. W latach sześcdziesątych XX wieku został opracowany przez Charles

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

Hibernate. Od Nowicjusza do Profesjonalisty. Dave Minter Jeff Linwood

Hibernate. Od Nowicjusza do Profesjonalisty. Dave Minter Jeff Linwood Hibernate Od Nowicjusza do Profesjonalisty Dave Minter Jeff Linwood Beginning Hibernate: From Novice to Professional ISBN-13 (pbk): 978-1-59059-693-7 ISBN-10 (pbk): 1-59059-693-5 Original edition Copyright

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/ Architektura Trwałość przezroczysta Konfiguracja, konfiguracja mapowania Dziedziczenie klas Kolekcje Asocjacje Cykl życia obiektów Trwałość przechodnia

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

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

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

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

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz Projektowanie oprogramowania Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz 1 Wykonanie czterowarstwowej aplikacji EE z dostępem do bazy danych,

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. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java Informatyka I Standard JDBC Programowanie aplikacji bazodanowych w języku Java dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Standard JDBC Java DataBase Connectivity uniwersalny

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

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

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

Cele. Definiowanie wyzwalaczy

Cele. Definiowanie wyzwalaczy WYZWALACZE Definiowanie wyzwalaczy Cele Wyjaśnić cel istnienia wyzwalaczy Przedyskutować zalety wyzwalaczy Wymienić i opisać cztery typy wyzwalaczy wspieranych przez Adaptive Server Anywhere Opisać dwa

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

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS UNIWERSYTET ZIELONOGÓRSKI INSTYTUT INFORMATYKI I ELEKTROTECHNIKI ZAKŁAD INŻYNIERII KOMPUTEROWEJ Przygotowali: mgr inż. Arkadiusz Bukowiec mgr inż. Remigiusz Wiśniewski LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

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

Systemy GIS Tworzenie zapytań w bazach danych

Systemy GIS Tworzenie zapytań w bazach danych Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE

Bardziej szczegółowo

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017 Informatyka I BAZY DANYCH dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Plan wykładu Definicja systemu baz danych Modele danych Relacyjne bazy danych Język SQL Hurtownie danych

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

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

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

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

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 4 Budowa prostych formularzy, stany sesji, tworzenie przycisków Plan Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 2 Formularz i jego typy Tworzenie formularza

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

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

Tworzenie raportów XML Publisher przy użyciu Data Templates

Tworzenie raportów XML Publisher przy użyciu Data Templates Tworzenie raportów XML Publisher przy użyciu Data Templates Wykorzystanie Szablonów Danych (ang. Data templates) jest to jedna z metod tworzenia raportów w technologii XML Publisher bez użycia narzędzia

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

Wdrożenie do projektu

Wdrożenie do projektu Wdrożenie do projektu Zaczynamy od stworzenia zwykłego projektu Java. Środowisko z jakiego korzystam to Netbeans IDE w wersji 8.1. Możesz wykorzystywać inne IDE, bylebyś stosował analogiczne kroki w swoim

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 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?

Bardziej szczegółowo

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. Informatyka I Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 Standard JDBC Java DataBase Connectivity

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

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

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

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

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

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

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

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych Laboratorium Technologii Informacyjnych Projektowanie Baz Danych Komputerowe bazy danych są obecne podstawowym narzędziem służącym przechowywaniu, przetwarzaniu i analizie danych. Gromadzone są dane w

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

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

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

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

Model semistrukturalny

Model semistrukturalny Model semistrukturalny standaryzacja danych z różnych źródeł realizacja złożonej struktury zależności, wielokrotne zagnieżdżania zobrazowane przez grafy skierowane model samoopisujący się wielkości i typy

Bardziej szczegółowo

Aplikacje Internetowe, Servlety, JSP i JDBC

Aplikacje Internetowe, Servlety, JSP i JDBC Aplikacje Internetowe, Servlety, JSP i JDBC Opis Java 2 Enterprise Edition (JEE) jest potężną platformą do tworzenia aplikacji webowych. PLatforma JEE oferuje wszystkie zalety tworzenia w Javie plus wszechstronny

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wprowadzenie Definiowanie wyzwalaczy DML Metadane wyzwalaczy Inne zagadnienia, tabele mutujące Wyzwalacze INSTEAD OF Wyzwalacze

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

Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat.

Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat. Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat. Serwer Tomcat Plan wykładu Opis serwera Jak uruchomić napisaną aplikację Podstawowa konfiguracja Pierwsze uruchomienie Tomcat

Bardziej szczegółowo

Podstawy programowania III WYKŁAD 2

Podstawy programowania III WYKŁAD 2 Podstawy programowania III WYKŁAD 2 Jan Kazimirski 1 Komunikacja z bazami danych 2 PHP i bazy danych PHP zapewnia dostęp do wielu popularnych baz danych. Kilka poziomów abstrakcji: Funkcje obsługujące

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2014 Plan wykładu 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 2 / 38 Zasady Projekt Składowe projektu przynajmniej

Bardziej szczegółowo

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa 1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko

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

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

Java i bazy danych. 1. JDBC podstawy, transakcje. 2. Mapowanie relacyjno obiektowe. Hibernate, przykład.

Java i bazy danych. 1. JDBC podstawy, transakcje. 2. Mapowanie relacyjno obiektowe. Hibernate, przykład. Java i bazy danych 1. JDBC podstawy, transakcje. 2. Mapowanie relacyjno obiektowe. Hibernate, przykład. 1 JDBC - wprowadzenie Java Database Connectivity (JDBC) to specyfkacja określająca zbiór klas i interfejsów

Bardziej szczegółowo

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

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf Materiały poprawione Rozwiązanie zadania w NetBeans IDE 7.4: Jarosław Ksybek, Adam Miazio Celem ćwiczenia jest przygotowanie prostej aplikacji

Bardziej szczegółowo

Java jako język programowania

Java jako język programowania Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)

Bardziej szczegółowo

Projektowanie baz danych za pomocą narzędzi CASE

Projektowanie baz danych za pomocą narzędzi CASE Projektowanie baz danych za pomocą narzędzi CASE Metody tworzenia systemów informatycznych w tym, także rozbudowanych baz danych są komputerowo wspomagane przez narzędzia CASE (ang. Computer Aided Software

Bardziej szczegółowo

Projektowanie aplikacji z bazami danych

Projektowanie aplikacji z bazami danych NHibernate Instytut Informatyki Uniwersytet Wrocławski Plan wykładu NHibernate Interfejsy Trwałość automatyczna i przezroczysta Definicja metadanych odwzorowujących Odwzorowanie dziedziczenia Mapowanie

Bardziej szczegółowo

Baza danych. Baza danych to:

Baza danych. Baza danych to: Baza danych Baza danych to: zbiór danych o określonej strukturze, zapisany na zewnętrznym nośniku (najczęściej dysku twardym komputera), mogący zaspokoić potrzeby wielu użytkowników korzystających z niego

Bardziej szczegółowo

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż. Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Wstęp Programowanie w Javie 2 mgr inż. Michał Misiak Agenda Założenia do wykładu Zasady zaliczeń Ramowy program wykładu

Bardziej szczegółowo

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł mysqli ma dwa interfejsy: proceduralny i obiektowy) PostgreSQL Oracle MS

Bardziej szczegółowo

Rok szkolny 2015/16 Sylwester Gieszczyk. Wymagania edukacyjne w technikum. ADMINISTROWANIE BAZAMI DANYCH kl. 4c

Rok szkolny 2015/16 Sylwester Gieszczyk. Wymagania edukacyjne w technikum. ADMINISTROWANIE BAZAMI DANYCH kl. 4c Wymagania edukacyjne w technikum ADMINISTROWANIE BAZAMI DANYCH kl. 4c Lp. 1 2 4 5 Temat Zasady dotyczące zarządzania projektem podczas prac związanych z tworzeniem bazy oraz cykl życiowy bazy Modele tworzenia

Bardziej szczegółowo

Kurs programowania aplikacji bazodanowych

Kurs programowania aplikacji bazodanowych Wykład 6 Instytut Informatyki Uniwersytet Wrocławski Plan wykładu CastleProject i wzorzec ActiveRecord Wybrane możliwości Castle ActiveRecord Inicjalizja i konfiguracja Tworzenie klasy encji, dziedziczenie

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1 1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie

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

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

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

DECLARE VARIABLE zmienna1 typ danych; BEGIN

DECLARE VARIABLE zmienna1 typ danych; BEGIN Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;

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

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