baze podataka · pretraživali podatke u bazi podataka (query) menjali podatke u bazi podataka...
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