Upload
maria-webster
View
218
Download
1
Tags:
Embed Size (px)
Citation preview
Java Database Conectivity
Julio M. Faerman
Arquitetura
Java Database Connectivity
# 2
Classes e dependências
Java Database Connectivity
# 3
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
Statements
• Satement– execute– executeQuery– executeUpdate– executeBatch
• PreparedStatement– setString, setInt, setDouble, setDate,…
Java Database Connectivity
# 5
Transações
Java Database Connectivity
# 6
Transações
• Atômicas• Consistentes• IIsoladassoladas• Duráveis
Java Database Connectivity
# 7
API
• Connection– setAutoCommit(boolean autoCommit)– commit()– Rollback()– setTransactionIsolation(int level)
Java Database Connectivity
# 8
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
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
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)
Connection Pooling
Java Database Connectivity
# 12
DBDBDataSour
ceDataSour
ce
JDBC: Outras Funcionalidades
• Stored Procedures• Metadata• Savepoints• RowId
Java Database Connectivity
# 13
Exercício: CRUD via JDBC
Java Database Connectivity
# 14
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
Data Access Object
Java Database Connectivity
# 16
DAO + Abstract Factory
Java Database Connectivity
# 17
Abstract Factory
Desenvolvimento web com Java
# 18
Java Database Connectivity
# 19
Dúvidas ?