19
Java Database Conectivity Julio M. Faerman

Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Embed Size (px)

Citation preview

Page 1: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Java Database Conectivity

Julio M. Faerman

Page 2: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Arquitetura

Java Database Connectivity

# 2

Page 3: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Classes e dependências

Java Database Connectivity

# 3

Page 4: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

JDBC API

1. Class.forName("org.apache.derby.jdbc.ClientDriver");2. Connection conn =

DriverManager.getConnection("jdbc:derby://localhost:1527/maindb","root","masterkey");

3. Statement stmt = conn.createStatement();4. stmt.executeUpdate("INSERT INTO FILME ….");5. ResultSet rs = stmt.executeQuery("SELECT * FROM

FILME");6. while(rs.next()){

System.out.println(rs.getString("TITULOORIGINAL"));}

7. conn.close();

Java Database Connectivity

# 4

Page 5: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Statements

• Satement– execute– executeQuery– executeUpdate– executeBatch

• PreparedStatement– setString, setInt, setDouble, setDate,…

Java Database Connectivity

# 5

Page 6: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Transações

Java Database Connectivity

# 6

Page 7: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Transações

• Atômicas• Consistentes• IIsoladassoladas• Duráveis

Java Database Connectivity

# 7

Page 8: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

API

• Connection– setAutoCommit(boolean autoCommit)– commit()– Rollback()– setTransactionIsolation(int level)

Java Database Connectivity

# 8

Page 9: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Anomalias em Transações

• Dirty Reads (Leitura Suja)– A(UPDATE) B(SELECT)

• Non-repeatable reads (Leitura não repetível)– A(SELECT) B(UPDATE) A(SELECT)

• Phantom reads (Leitura fantasma)– A(SELECT) B(INSERT)

Java Database Connectivity

# 9

Page 10: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Anomalias por nível de isolamento

Nível de isolamento Dirty Non Repeatable

Phantom

NONE SIM SIM SIM

READ_UNCOMMITTED SIM SIM SIM

READ_COMMITTED NÃO SIM SIM

REPEATABLE_READ NÃO NÃO DEPENDE

SERIALIZABLE NÃO NÃO NÃO

Java Database Connectivity

# 10

MCNH:•Específico por banco•Considere o locking

MCNH:•Específico por banco•Considere o locking

Page 11: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Transações Distribuidas

Java Database Connectivity

# 11

Server 1Server 1 Server 2Server 2 Server 3Server 3

DB 1DB 1 DB 2DB 2 MQMQ

TX Manager

(2PC/XA,3PC)

TX Manager

(2PC/XA,3PC)

Page 12: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Connection Pooling

Java Database Connectivity

# 12

DBDBDataSour

ceDataSour

ce

Page 13: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

JDBC: Outras Funcionalidades

• Stored Procedures• Metadata• Savepoints• RowId

Java Database Connectivity

# 13

Page 14: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Exercício: CRUD via JDBC

Java Database Connectivity

# 14

Page 15: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Exercício: Multiplos DBs ou armazenamentos• SQL Dialects

– Geração de chaves– TOP / LIMIT– Oracle Connect By– …

• SGBD(R,PR,OO,XML…) E Arquivos

Java Database Connectivity

# 15

• Cuidados com operadores condicionais

• Herança e do polimorfismo podem ajudar

• Separe responsabilidades

Page 16: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Data Access Object

Java Database Connectivity

# 16

Page 17: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

DAO + Abstract Factory

Java Database Connectivity

# 17

Page 18: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Abstract Factory

Desenvolvimento web com Java

# 18

Page 19: Java Database Conectivity Julio M. Faerman. Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC

Java Database Connectivity

# 19

Dúvidas ?