Java Database Conectivity Julio M. Faerman
Arquitetura Java Database Connectivity # 2 AplicaçãoJDBC API Driver Manager JDBC Driver SGBDR AplicaçãoJDBC API Driver Manager Ponte JDBC-ODBC Driver ODBCSGBDR
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 TX 1 SELECT INSERT UPDAT E DELETE TX 2 UPDAT E DELETE INSERT TX 3 SELECT DELETE INSERT UPDAT E Java Database Connectivity # 6
Transações A tômicas C onsistentes I soladas I soladas D urá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 isolamentoDirtyNon RepeatablePhantom NONESIM READ_UNCOMMITTEDSIM READ_COMMITTEDNÃOSIM REPEATABLE_READNÃO DEPENDE SERIALIZABLENÃ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 1 Server 2 Server 3 DB 1 DB 2 MQ TX Manager (2PC/XA,3P C) TX Manager (2PC/XA,3P C)
Connection Pooling Java Database Connectivity # 12 DB DataSourc e
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 ?