Kurs programowania aplikacji bazodanowych



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

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

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

Kurs programowania aplikacji bazodanowych

Metody dostępu do danych

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

JDBC (Java Database Connectivity vit )

Aplikacje bazodanowe. dr inż. Arkadiusz Mirakowski

JAVA I BAZY DANYCH. MATERIAŁY:

Programowanie komputerów. Wykład 10: Dostęp do baz danych z poziomu aplikacji Java. (JDBC Database Access)

Programowanie obiektowe zastosowanie języka Java SE

Paweł Rajba

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

Administracja i programowanie pod Microsoft SQL Server 2000

Połączenie z bazą danych

Typy sterowników. Rozdział 21 JDBC. Podstawowe kroki aplikacji. Historia. Program napisany w języku Java JDBC API. Menadżer sterowników JDBC

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

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Zaawansowane Systemy Decyzyjne. Laboratorium

Wdrożenie modułu płatności eservice. dla systemu Magento

Programowanie obiektowe

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

Dokumentacja aplikacji Szachy online

JAVA bazy danych. na bazie: Język Java - Podstawy Programowania - Jacek Rumiński

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

Rozdział 9 Obsługa baz danych w języku Java

Pojęcie systemu baz danych

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

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

JDBC - Obsługa baz danych w języku Java

dziennik Instrukcja obsługi

JDBC. Plan ćwiczenia. Wywoływanie poleceń SQL z języków programowania. Plan ćwiczenia cd. Wprowadzenie do laboratorium

Aplikacje internetowe i rozproszone - laboratorium

Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows

Oracle PL/SQL. Paweł Rajba.

Podstawy otwartych języków programowania Java Database Connectivity (JDBC)

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Projektowanie baz danych za pomocą narzędzi CASE

1 Wprowadzenie do J2EE

Instrukcja instalacji i konfiguracji bazy danych SQL SERVER 2008 EXPRESS R2. Instrukcja tworzenia bazy danych dla programu AUTOSAT 3. wersja 0.0.

Budowa aplikacji ASP.NET współpracującej z bazą danych do obsługi przesyłania wiadomości

Javadoc. Piotr Dąbrowiecki Sławomir Pawlewicz Alan Pilawa Joanna Sobczyk Alina Strachocka

Aplikacje Internetowe, Servlety, JSP i JDBC

REFERAT PRACY DYPLOMOWEJ

Java jako język programowania

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Wybrane działy Informatyki Stosowanej

Projektowanie aplikacji z bazami danych

Instrukcja tworzenia aplikacji bazodanowej opartej o technologię Oracle i platformę.net

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

76.Struktura oprogramowania rozproszonego.

Oracle PL/SQL. Paweł Rajba.

Microsoft SQL Server Podstawy T-SQL

Łączenie z bazą danych przykładowa klasa infpolaczenie import java.sql.drivermanager; import java.sql.connection; import java.sql.

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

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

Budowa aplikacji ASP.NET współpracującej z bazą danych do obsługi przesyłania wiadomości

GS2TelCOMM. Rozszerzenie do TelCOMM 2.0. Opracował: Michał Siatkowski Zatwierdził: IMIĘ I NAZWISKO

Biuletyn informacyjny WeriOn. 4/2015 Instrukcja konfiguracji połączenia z programem WF-MAG r.

Oracle Designer. Oracle Designer jest jednym z głównych komponentów pakietu Oracle Developer Suite. Oracle Designer wspiera :

BACKUP BAZ DANYCH FIREBIRD

1.Wstęp. 2.Generowanie systemu w EDK

Aplikacje RMI

Konfigurowanie konta pocztowego w programie Netscape (wersja 7.2)

Oracle10g: Programowanie w PL/SQL

Pracownia internetowa w szkole ZASTOSOWANIA

Biuletyn informacyjny WeriOn. 3/2015 Instrukcja konfiguracji połączenia z programem Subiekt GT r.

Wprowadzenie do Doctrine ORM

Procedura aktualizacji systemu TelkomBud. dla serwera DBfC w wersji 4.x

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Plan. Aplikacja. Architektura aplikacji. Architektura aplikacji Tworzenie aplikacji Application Builder podstawy

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

Connection con = DriverManager.getConnection(dbUrl, username, passwd);

Java Database Connectivity

Plan wykładu. Dostęp do bazy danych. Architektura JDBC. Dostęp do baz danych z aplikacji Java EE

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC

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

Wybrane działy Informatyki Stosowanej

Migracja do PostgreSQL za pomocą narzędzi Enterprise DB

Programowanie obiektowe

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

AUREA BPM Oracle. TECNA Sp. z o.o. Strona 1 z 7

Zasady współpracy programu Doradca Handlowy z Symfonią

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Programowanie Komponentowe WebAPI

METODY REPREZENTACJI INFORMACJI

Tomasz Grześ. Systemy zarządzania treścią

Business Intelligence Beans + Oracle JDeveloper

Transkrypt:

Wykład 1 Instytut Informatyki Uniwersytet Wrocławski

Plan wykładu Architektury aplikacji Architektura aplikacji Jednowarstwowa Dwuwarstowa Rozproszona (JDBC) Wprowadzenie Architektura JDBC Sterowniki, sterowniki dla Oracle Określanie źródła danych Hierarchia klas JDBC, wybrane klasy i interfejsy JDBC Uruchomienie aplikacji Transakcje Operowanie na wyniku Preparowany SQL Wykonywanie procedur składowanych Wsady, Metadane

Architektura jednowarstwowe Charakteryzują się składowaniem bazy danych lokalnie Są stosunkowo łatwe do napisania i małe Nie są skalowalne i nie obsługuję wielodostępu Przykładowe rozwiązania: MS Access, Paradox

Architektura dwuwarstowe Są też nazywane aplikacjami typu klient serwer Jest to bardzo często wykorzystywany model W tym modelu klienci mogą pracować równolegle Pojawia się problem rozbudowanych klientów Rozwój programu staje się z czasem coraz trudniejszy Są stosunkowo łatwe do napisania i wzdrożenia Lista punktów, z których spełnienie chociaż jednego sprawia, że warto rozpatrzyć rozwiązanie typu klient serwer Czas wdrożenia jest ważniejszy od architektury aplikacji Aplikacja korzysta z jednej bazy danych System bazy danych jest na jednym serwerze Rozmiar bazy danych będzie podczas używania aplikacji stały Liczba użytkowników będzie podczas używania aplikacji stała

Architektura rozproszona Pozwala podzielić aplikację na wartwy Umożliwia odchudzenie klienta, ułatwia skalowanie aplikacji Przykładowy zestaw warstw Warstwa interfejsu użytkownika np. aplikacja SWING lub przeglądarka WWW Warstwa generowania zawartości np. tworzenie strony WWW do przekazania użytkownikowi Warstwa zarządzania treścią np. CMS Warstwa usług WWW, WebServices za zadanie będzie miała dostarczanie danych innym aplikacjom Warstwa logiki biznesowej Warstwa uwierzytelnienia Warstwa pamięci masowej, czyli baza danych

Wprowadzenie Co to jest JDBC? Interfejs Javy do komunikacji z DBMS Podstawą był ODBC, którego dostosowanie do Javy zostało zarzucone ODBC było napisane w C ODBC źle się integrowało z Javą ODBC wymagało uruchomienie zewnętrznego natywnego kodu Zalety JDBC Łatwe w użyciu Dobrze zintegrowane ze środowiskiem Javy Niezależne od bazy danych Niezależne od platformy systemowej

Architektura JDBC Źródło: Dany Ayers, et al., Professional Java Data, Wrox 2001

Sterowniki JDBC Krótki wstęp Niektóre sterowniki są dostępne w samej platformie Javy Większość sterowników jest jednak dostarczanych przez producenta DBMS Niestety czasami sterowniki do komercyjnych DBMS są płatne Pod adresem http://developers.sun.com/product/jdbc/drivers można sprawdzić, jest sterownik określonego typu do danego DBMS wypełnić formularz informujący o nowym sterowniku (nowym typu), którego nie ma na liście dokonać edycji informacji o sterowniku (dla producentów)

Sterowniki JDBC Mamy 4 rodzaje sterowników JDBC: Typ 1: JDBC-ODBC bridge driver Wywołania funkcji JDBC są tłumaczone na wywołania funkcji ODBC Sterownik dołączony w instalacji Java 2 SDK Wymagają instalacji u klienta dodatkowego oprogramowania (ODBC) Wydajność oparta na takim poziomie jest na niskim poziomie W praktyce rzadko używane rozwiązanie Typ 2: Java plus native code driver Ten sterownik jest wydajniejszy od sterownika typu 1 Sterownik napisany w Javie, jednak do komunikacji z DBMS jest wykorzystywany dodatkowy sterownik napisany w np. C Niestety również wymagają instalacji dodatkowego oprogramowania po stronie klienta

Sterowniki JDBC Mamy 4 rodzaje sterowników JDBC (cd.): Typ 3: JDBC-Net pure Java driver: Wywołania JDBC są tłumaczone na niezależny od DBMS protokół, które są przetwarzane komponent pośredni Sterownik łączy się bezpośrednio z tym serwerem pośredniczącym Serwer pośredniczący kontynuuje komunikację z DBMS Nie wymaga instalacji dodatkowego oprogramowania po stronie klienta Typ 4: Proprietary protocol pure Java Driver: Sterownik łączy się bezpośrednio z DBMS Nie ma potrzeby instalacji dodatkowego oprogramowania po stronie klienta Najczęściej dostępne u producenta danego DBMS Sterowniki nazywane także sterownikami typu thin.

Sterowniki JDBC dla Oracle Są dwa rodzaje sterowników THIN jest prostszy w instalacji wystarczy skopiować plik.jar przy połączeniu podajemy pełną ścieżkę do bazy danych sterownik typu 4 OCI zwykle wymaga instalacji klienta łączymy się przez podanie identyfikatora określonego w TNSNAMES sterownik typu 2 My będziemy korzystać ze sterownika THIN, który znajduje się w: C:\OracleXE\app\oracle\product\10.2.0\server\jdbc\lib\ojdbc14.jar

Sterowniki JDBC dla SQL Server Sterownik można pobrać ze strony pod adresem: http://www.microsoft.com/downloads/details.aspx? FamilyId=F914793A-6FB4-475F-9537-B8FCB776BEFD&displaylang=en Sterownik pod powyższym adresem jest typu 4 Do sterownika dołączona jest dokumentacja i przykłady

Określanie źródła danych Źródło danych jest określane za pomocą składni typu URL Podstawowa składnia URLa jest następująca jdbc:<podprotokół>:<lokalizacja-bd> Znaczenie poszczególnych części: subprotokół określa rodzaj sterownika lub ogólniej sposób łączenia się z bazą danych lokalizacja-bd określa lokalizację bazy danych (format czasami zależy od subprotokołu) Przykładowe URLe jdbc:odbc:bazooka jdbc:msql://serwer.bazydanych.pl:1234/baza jdbc:mysql://localhost/test jdbc:oracle://cos:1521/baza jdbc:sqlserver://localhost:1433;databasename=baza; user=sa;password=haslo

Hierarchia klas JDBC Źródło: Dany Ayers, et al., Professional Java Data, Wrox 2001

Wybrane klasy i interfejsy JDBC java.sql.driver interfejs odpowiedzialny za nawiązanie połączenia oraz komunikację z DBMS przezroczysty dla programisty (chyba, że chcemy napisać własny sterownik do DBMS) java.sql.drivermanager zarządza listą dostępnych sterowników do DBMS udostępnia aplikacji niezbędnych komponentów do połączenia się z DBMS posiada metody registerdriver() i deregisterdriver(), które pozwalają na rejestrację i derejestrację implementacji interfejsu java.sql.driver

Wybrane klasy i interfejsy JDBC java.sql.connection służy do nawiązania połączenia z DBMS reprezentuje pojedynczą transakcję java.sql.statement reprezentuje zapytanie SQL ma trzy metody do wykonania zapytania ResultSet executequery(string) int executeupdate(string) int execute(string) java.sql.preparedstatement reprezentuje zapytanie wykonywane wielokrotnie java.sql.callablestatement reprezentuje wywołanie procedury składowanej

Wybrane klasy i interfejsy JDBC java.sql.resultset reprezentuje wynik zapytania SQL udostępnia metody do pobrania danych z wyniku metody są postaci X getx(parametr), gdzie parametrem jest nr kolumny lub nazwa kolumny np. int getint(int) czasami jest możliwa automatyczna konwersja, np. datę można pobrać metodą getstring() udostępnia metody do nawigacji po wierszach wyniku np. next(), previous(), itd. java.sql.types udostępnia zestaw stałych odpowiadających typom języka SQL stałe te są typu integer skojarzenia bazują na specyfikacji XOPEN SQL

Wybrane klasy i interfejsy JDBC java.sql.sqlexception reprezentuje wyjątki powstałe w wyniku współpracy z DBMS informację są w zgodzie ze specyfikacją XOPEN SQL java.sql.sqlwarning reprezentuje ostrzeżenie (błąd, który nie powoduje przerwania działań) poprzez metodę ResultSet.getWarnings() mamy dostęp do listy ostrzeżeń

Uruchomienie aplikacji W środowisku Oracle JDeveloper Tworzymy aplikację, projekt Zaznaczamy projekt, wybieramy Project Properties Wybieramy w drzewie pozycję Libraries Następnie przycisk Add Jar/Directory i wskazujemy na sterownik do Oracle a W środowisku Eclipse Z menu kontekstowego projektu wybieramy właściwości Z drzewa po lewej stronie wybieramy Java Build Path, wybieramy Add External JARs... Wskazujemy plik sqljdbc4.jar i wszystko zatwierdzamy. W wierszu poleceń: oglądamy run.bat i run.sh

Przykład Architektury aplikacji Przykład: Pierwszy PobierzDane.java PobierzDane2.java ModyfikujDane.java

Transakcje Architektury aplikacji Do zarządzania transakcjami mamy metody Connection.setAutoCommit(true false) Connection.commit() Connection.rollback() Obsługa punktów zapisu odbywa się za pomocą Obiektu Savepoint Metody Connection.setSavePoint(nazwa punktu) Metody Connection.rollback(nazwa punktu)

Transakcje Architektury aplikacji Najpierw, za pomocą poniższej konstrukcji sprawdzamy, czy DBMS obsługuje dany poziom izolacji: DatabaseMetaData dbmd = connection.getmetadata(); if (dbmd.supportstransactionisolationlevel(poziom)) {...} Potem możemy ustawić poziom izolacji za pomocą metody Connection.setTransactionIsolation Aby określić poziom izolacji, mamy to dyspozycji stałe statyczne Connection.TRANSACTION READ COMMITTED Connection.TRANSACTION READ UNCOMMITTED Connection.TRANSACTION REPEATABLE READ Connection.TRANSACTION SERIALIZABLE

Przykład Architektury aplikacji Przykład: Transakcje Transakcje.java SavePoints.java

Operowanie na wyniku Do tej pory tworzyliśmy statement za pomocą Connection.createStatement() Utworzone wyniki były kursorami tylko-do-odczytu i przewijalnymi tylko do przodu (mieliśmy tylko rs.next()) Metoda createstatement() jest przeciążona, w związku z czym możemy ją wywoływać z parametrami Odpowiednie ustawienie tych parametrów umożliwi nam przewijanie kursora w dowolną stroną oraz także modyfikację danych związanych z kursorem

Operowanie na wyniku Przyjrzyjmy się metodzie createstatement() Składnia: Connection.createStatement(int resultsettype, int resultsetconcurrency) Parametry: resultsettype - określa widoczność zmian innych transakcji ResultSet.TYPE FORWARD ONLY: przewijanie tylko do przodu (domyślnie) ResultSet.TYPE SCROLL INSENSITIVE: niewrażliwy na zmiany innych użytkowników ResultSet.TYPE SCROLL SENSITIVE: wrażliwy na zmiany innych użytkowników resultsetconcurrency - określa, czy kursor ma być read-only: ResultSet.CONCUR READ ONLY: domyślne ResultSet.CONCUR UPDATABLE: pozwala na modyfikację danych związanych z kursorem

Operowanie na wyniku Wybrane metody obiektu ResultSet rs.next(), rs.previous() rs.first(), rs.last(), rs.beforefirst(), rs.afterlast() rs.isfirst(), rs.islast(), rs.isbeforefirst(), rs.isafterlast() rs.absolute(liczba), rs.relative(liczba) rs.insertrow(), rs.deleterow(), rs.updaterow() rs.cancelrowupdates(), rs.refreshrow() rs.getxxx(), updatexxx( kolumna, wartosc ) rs.movetoinsertrow(), rs.movetocurrentrow()

Przykład Architektury aplikacji Przykład: UpdatableResultSet ManipulacjaDanymi.java

Preparowany SQL Kiedy używamy preparacji zapytań? Treść zapytania pozostaje niezmienna Zapytanie jest często przetwarzane Zapytanie jest wysyłane do bazy i potem prekompilowane Jak używamy? Zapytanie reprezentuje PreparedStatement Tworzymy poprzez Connection.prepareStatement() Parametry są reprezentowane przez? Mamy metody typu stmt.setxxx(nr kol, wartość)

Wykonywanie procedur składowanych Do wywoływania procedur i funkcji używamy obiektów klasy CallableStatement Tworzymy je poprzez Connection.prepareCall() Funkcja preparecall może przyjąć parametr w jednej z dwóch postaci: {?= call <procedure-name>[<arg1>,<arg2>,...]} {call <procedure-name>[<arg1>,<arg2>,...]} Parametry procedury są reprezentowane przez? Parametry wejściowe i wyjściowe ustawiamy przez setxxx(string parametername, XXX wartość) registeroutparameter(int paramindex, int sqltype) Parametry są typu IN używamy setxxx() OUT używamy registeroutparameter() IN OUT używamy setxxx() i registeroutparameter()

Przykład Architektury aplikacji Przykład: PreparowanieWywolanie Preparowanie.java Wywolywanie.java

Wsady Architektury aplikacji Co to jest wsad i do czego służy? Obsługa wsadów jest w każdym z obiektów Statement, PreparedStatement, CallableStatement W każdym obiekcie do obsługi wsadów mamy metody void addbatch(string s) void clearbatch() int[] executebatch() Dostępny jest wyjątek BatchUpdateException oraz jego metoda getupdatecounts() Należy pamiętać, że we wsadach mogą być procedury tylko o parametrach typu IN

Przykład Architektury aplikacji Przykład: Wsady Wsady.java Wsady2.java Wsady3.java

Metadane Architektury aplikacji Z wynikiem nie są dostarczane informacje o strukturze tych danych (dlaczego?) Dostęp do informacji o strukturze jest poprzez interfejs ResulSetMetaData, który pozwoli ustalić Ile jest kolumn w wyniku? Czy dopuszczane są wartości NULL? Jakie są etykiety nagłówków kolumn? Jakie są nazwy kolumn? Jakie są typy kolumn? Jaka jest tabela źródłowa dla kolumn? Informacje o bazie danych otrzymamy poprzez interfejs DatabaseMetaData Informacje o nazwie DBMS, wersji Informacje o sterowniku, nazwa użytkownika Informacji o parametrach PreparedStatement dostarcza interfejs ParameterMetaData Liczba parametrów

Przykład Architektury aplikacji Przykład: Metadane Metadane.java

Architektury aplikacji Wprowadzenie Lekki DBMS napisany w Javie Do pobrania ze strony http://www.hsqldb.org/ W pobranym pakiecie jest biblioteka i są przykłady

Architektury aplikacji Jak tego używać? Rozpakujemy pobranego zip a Uruchamiamy serwer odpalając skrypt demo/runserver.bat Uruchamiamy narzędzie do zarządzania odpalając skrypt demo/runmanagerswing.bat W narzędziu HSQL Database Manager łaczymy się bazą korzystając z następujących parametrów: Type: HSQL Database Engine Standalone Driver: org.hsqldb.jdbcdriver URL: jdbc:hsqldb:file:/sciezka/do/pliku User: sa Password: W kodzie Javy z bazą łączymy się poprzez wpisanie: Class.forName("org.hsqldb.jdbcDriver"); connection = DriverManager.getConnection("jdbc:hsqldb:hsqldbtest.db", "sa", "");