baze podataka · pretraživali podatke u bazi podataka (query) menjali podatke u bazi podataka...

26
Baze podataka

Upload: others

Post on 04-Feb-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

  • Baze podataka

  • Softverski paket koji kontroliše pristup i izmene podataka u bazi podataka

    SUBP = DBMS (Database management system)

    Relacioni model podataka je dominantan za modelovanje podataka tabelama i relacijama

    MySQL je sistem za upravljanje relacionim bazama podataka koji je otvorenog koda

  • Structured query language

    Standardni jezik za obraćanje relacionim bazama podataka

    DDL – data definition language

    DCL – data control language – ovo se nekad svstava kao podskup od DDL

    DML – data manipulation language

  • Definisanje strukture podataka, odnosno šeme

    create database,

    create table,

    alter table,

    drop table,

    itd…

  • Naredbe za kontrolu pristupa podacima u bazi podataka

    grant privileges

    revoke privileges

  • Naredbe za čitanje i izmenu podataka iz baze

    select - link

    insert - link

    update - link

    delete - link

    https://dev.mysql.com/doc/refman/5.0/en/select.htmlhttps://dev.mysql.com/doc/refman/5.0/en/insert.htmlhttps://dev.mysql.com/doc/refman/5.0/en/update.htmlhttps://dev.mysql.com/doc/refman/5.0/en/delete.html

  • Primary key ◦ primarni ključ

    ◦ jedinstveni identifikator zapisa u tabeli

    ◦ prirodni i surogate

    Foreign key ◦ spoljni ključ

    ◦ veza ka drugom zapisu koji može biti i u drugoj tabeli

    ◦ referencijalni integritet mora biti održan

  • JDBC – standardni API za pristup bazi

    Podsistem za komunikaciju sa RDBMS serverima zasnovanim na SQL-u

    Celokupan podsistem je definisan u

    standardnom paketu java.sql

  • Skup klasa koje implementiraju interfejse iz

    paketa java.sql

    Obezbeđuje ih svaki proizvođač RDBMS servera za svoje sisteme

    Svi drajveri se na isti način koriste

  • Isti Java kod se može upotrebiti za rad sa serverima različitih proizvođača, uz korišćenje odgovarajućeg JDBC drajvera

  • pristup bazi podataka iz Java aplikacije

    servleti, JSP

    distribuirane komponente (EJB)

  • RDBMS Java

    aplikacija TCP/IP mreža JDBC

  • WWW

    čitač

    WWW server

    JDBC servlet

    RDBMS

    RDBMS

    RDBMS

    ...

  • Skinuti binarnu distribuciju sa http://dev.mysql.com/downloads/connector/j/5.1.html

    Otpakovati arhivu i staviti mysql-connector-java-[version]-bin.jar u classpath projekta (mysql-connector-java-5.1.5-bin.jar)

    Online dokumentacija je dostupna ovde: http://dev.mysql.com/doc/connector-j/en/index.html

    http://dev.mysql.com/downloads/connector/j/5.1.htmlhttp://dev.mysql.com/downloads/connector/j/5.1.htmlhttp://dev.mysql.com/doc/connector-j/en/index.htmlhttp://dev.mysql.com/doc/connector-j/en/index.htmlhttp://dev.mysql.com/doc/connector-j/en/index.html

  • Učitavanje JDBC drajvera Class.forName("com.mysql.jdbc.Driver");

    Uspostavljanje veze Connection conn =

    DriverManager.getConnection(

    "jdbc:mysql://localhost:3306/jwts",

    "root", "root");

  • Učitavanje JDBC drajvera se vrši: Class.forName("com.mysql.jdbc.Driver");

    Statički blok u klasi drajvera se inicijalizuje i poziva registerDriver metodu klase DriverManager čime se registruje MySQL drajver.

    Poziv: DriverManager.getConnection(

    "jdbc:mysql://localhost:3306/jwts",

    "demo", "demo");

    pronalazi registrovan MySQL drajver i vraća uspostavljenu vezu ka SUBP.

  • Koristimo Statement objekat da bi: ◦ pretraživali podatke u bazi podataka (query)

    ◦ menjali podatke u bazi podataka (update)

    Tri vrste interfejsa: ◦ Statement, PreparedStatement, CallableStatement

    Implementacije ovih interfejsa su u implementaciji driver-a

  • PR EDM ET_ID = PRED MET_ID

    NASTAVNIK_ID = NASTAVN IK_IDNAST AVNICI

    NAST AVNIK_ ID INTEGER

    IM E VARCHAR2(25)

    PREZIME VARCHAR2(35)

    ZVANJE VARCHAR2(15)

    PREDMETI

    PREDMET_ID INTEGER

    NAZIV VARCHAR2(150)

    PREDAJE

    PREDMET_ID INTEGER

    NAST AVNIK_ ID INTEGER

  • Statement i ResultSet String query = "SELECT ime, prezime FROM nastavnici";

    Statement stmt = conn.createStatement();

    ResultSet rset = stmt.executeQuery(query);

    while (rset.next()) {

    System.out.println(

    rset.getString(1) + " " + rset.getString(2));

    }

    rset.close();

    stmt.close();

    primer01

  • ResultSet objekti omogućavaju pristup tabelama koji su rezultat izvršavanja upita

    Samo jedan ResultSet po Statement objektu može biti otvoren u jednom trenutku

    Sekvenca redova tabele, pomoću metode next() pristupamo narednom redu

    getString(2), getString(“prezime”) – metode za pristup podatku koji se nalazi u jednoj ćeliji a koji je tipa String

  • Statement String deleteStr =

    "DELETE FROM nastavnici" +

    "WHERE prezime = ‘Ivanovic'";

    Statement stmt = con.createStatement();

    int delnum = stmt.executeUpdate(deleteStr);

    executeUpdate - povratna vrednost je broj redova koji su

    pretrpeli izmene u bazi podataka

  • PreparedStatement PreparedStatement stmt = conn.prepareStatement(

    "insert into nastavnici (id, ime, prezime) values (?, ?, ?)");

    stmt.setInt(1, 4);

    stmt.setString(2, "Sima");

    stmt.setString(3, "Simic");

    stmt.executeUpdate();

    stmt.close();

    ovaj deo se ponavlja više puta, sa novim podacima

    primer02

  • Procedure koje žive u SUBP-u

    Pisane u SQL jeziku

    Brža komunikacija sa bazom podataka

    CallableStatement

  • JDBC konekcija je po definiciji u auto-commit modu

    Ako se konekcija podesi u ručni commit mod (conn.setAutoCommit(false)), onda se: ◦ transakcija potvrđuje sa conn.commit()

    ◦ transakcija se opoziva sa conn.rollback()

  • JDBC2.0 predviđa upotrebu DataSource-a umesto DriverManager.getConnection metode za dobavljanje konekcije

    DataSource se dobija lookup-om po JNDI stablu

    Konekcija se dobija iz DataSource-a, metodom getConnection

    Konekcija se gasi metodom close

    Sada se neko drugi brine o konekcijama ◦ servletski kontejner

    ◦ aplikacioni server