Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
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