Вы находитесь на странице: 1из 40

Java com Banco de Dados

Globalcode open4education

Instrutor

Globalcode open4education

Apresentao da agenda

3

Introduo Design Pattern A API JDBC Driver Connection Statement ResultSet Concluso
Globalcode open4education

Agenda

4

Introduo Design Pattern A API JDBC Driver Connection Statement ResultSet Concluso
Globalcode open4education

O que persistncia?
Capacidade de gravarmos dados em memrias no volteis
hard-disk, tape-backup, CD, DVD, etc.

Necessidade bsica, 99% dos softwares corporativos necessitam; Quanto mais culpados queremos encontrar, mais dados armazenamos;
5 Globalcode open4education

Banco de dados relacional


Banco de dados relacional - local para persistncia MS Access, DB2, MS SQL Server, Oracle, Sybase, MySQL, Postgres... SQL (Structured Query Language) linguagem para manipulao dos dados persistidos
6 Globalcode open4education

Banco de dados relacional

SQL: Fcil e Confivel


SQL muito popular Diversos profissionais falam SQL
Desenvolvedores Analistas DBAs

Controle sobre o que acontece no BD

Edgar Frank Codd

Globalcode open4education

Agenda

8

Introduo Design Pattern A API JDBC Driver Connection Statement ResultSet Concluso
Globalcode open4education

Design Pattern
Design pattern
Soluo para um problema recorrente Definido em funo de:
Um problema, uma soluo, exemplos de aplicaes prticas da soluo, exemplo de implementao em alguma linguagem...

Globalcode open4education

Design Pattern
DAO Data Access Object
Centraliza o servio de persistncia de objetos em um pequeno conjunto de classes, evitando que cdigo SQL se espalhe por muitas classes do sistema

10

Globalcode open4education

Design Pattern
Anti-pattern

Proposta do DAO

11

Globalcode open4education

Agenda

12

Introduo Design Pattern A API JDBC Driver Connection Statement ResultSet Concluso
Globalcode open4education

JDBC
JDBC Java Database Conectivity
API Java com interfaces para acesso e manipulao de bancos de dados que suportam SQL Torna transparente a utilizao de diferentes bancos de dados

13

Globalcode open4education

JDBC
Existe desde o Java 1.1 Suporta Comandos SQL Procedures Metadados A 1 API de muitos programadores Java
14 Globalcode open4education

Agenda

15

Introduo Design Pattern A API JDBC Driver Connection Statement ResultSet Concluso
Globalcode open4education

Driver

16

Globalcode open4education

Driver
Download
http://developers.sun.com/product/jdbc/drivers

Configurao do classpath
java cp c:\java\jars\mysql_jdbc.jar Produto

17

Globalcode open4education

Driver
Aplicao Java API JDBC (java.sql) driver tipo 1 driver tipo 2 driver tipo 3 driver tipo 4

driver ODBC client nativo broker

RDBMS

18

Globalcode open4education

Agenda

19

Introduo Design Pattern A API JDBC Driver Connection Statement ResultSet Concluso
Globalcode open4education

O pacote java.sql
Principais classes e interfaces do pacote java.sql

20

Globalcode open4education

Conexo com banco de dados

java.sql.Driver
Interface que define mtodos para conexo com o banco de dados O provedor do SGBD(Sistema Gerenciador de Banco de Dados) faz uma implementao desta interface, criando uma classe que representa o driver JDBC

21

Globalcode open4education

Conexo com banco de dados

java.sql.DriverManager
Classe que gerencia mltiplas implementaes da interface Driver O driver carregado usando
Class.forName(nome-driver)

22

Globalcode open4education

Conexo com banco de dados

java.sql.Connection
Interface para a criao de objetos que representam as instrues para o banco de dados (Statements) Controle de transao Liberao de recursos

23

Globalcode open4education

Conexo com banco de dados

24

Globalcode open4education

Conexo com banco de dados


import java.sql.*; ... public static Connection getConexao() { Connection conn = null; try { Class.forName(org.gjt.mm.mysql.Driver); conn = DriverManager.getConnection( jdbc:mysql://host:3306/,aj, aj); return conn; } catch (ClassNotFoundException e) { //instrues de tratamento de erro } }

25

Globalcode open4education

Agenda

26

Introduo Design Pattern A API JDBC Driver Connection Statement ResultSet Concluso
Globalcode open4education

Instruo no banco de dados

java.sql.Statement
Interface para o envio de comandos SQL ao banco de dados Statements so fabricados por meio da chamada a mtodos da interface Connection

27

Globalcode open4education

Instruo no banco de dados


public class Produto { private int id; private String nome; private int preco; public Produto(String nome, int preco) { setNome(nome); setPreco(preco); } public Produto(int id, String nome, int preco) { this(nome, preco); setId(id); } // getters, setters e outros mtodos }

28

Globalcode open4education

Instruo no banco de dados


... public class ProdutoDAO { public void save(Produto produto) throws GlobalcodeException { String sql = ; if (produto.getId() == 0) { sql = INSERT INTO produtos (nome ,preco) ; sql += VALUES ( + produto.getNome() + ', ; sql += produto.getPreco() + ); } else { sql = UPDATE produtos SET nome = + produto.getNome() + ', ; sql += preco = + produto.getPreco() + ', ; sql += WHERE id = + produto.getId(); } Statement stmt = null; Connection conn = ConnectionManager.getConexao();

Continua
29 Globalcode open4education

Instruo no banco de dados


try { stmt = conn.createStatement(); stmt.executeUpdate(sql); } catch (SQLException e) { throw new GlobalcodeException(Erro na query., e); } finally { ConnectionManager.close(conn, stmt); } } }

Usando o dao

Produto p = new Produto(livro, 50.0); ProdutoDAO dao = new ProdutoDAo(); dao.salvar(p);


Globalcode open4education

30

Agenda

31

Introduo Design Pattern A API JDBC Driver Connection Statement ResultSet Concluso
Globalcode open4education

Instruo no banco de dados

java.sql.ResultSet
Interface que oferece mtodos para recuperar resultados de comandos SQL executados sobre o banco de dados Navegao nos resultados

32

Globalcode open4education

Instruo no banco de dados

... public class ProdutoDAO { public Produto getProduto(int id) throws GlobalcodeException { String sql = "SELECT * FROM produtos WHERE id = " + id; Connection conn = null; Statement stmt = null; ResultSet rs = null; Produto produto = null; try { conn = ConnectionManager.getConexao(); stmt = conn.createStatement(); rs = stmt.executeQuery(sql);

Continua
33 Globalcode open4education

Instruo no banco de dados

if (rs.next()) { String nome = rs.getString("nome"); int preco = rs.getInt("preco"); produto = new Produto(id, nome, preco); } return produto; } catch (SQLException e) { throw new GlobalcodeException("Erro no select.,e); } finally { ConnectionManager.close(conn, stmt, rs); } } }

34

Globalcode open4education

Agenda

35

Introduo Design Pattern A API JDBC Driver Connection Statement ResultSet Concluso
Globalcode open4education

Boas prticas
Utilize o design pattern DAO Utilize arquivos properties para armazenar o cdigo SQL DAO tende a ficar grande, e se necessrio combine outros patterns para evitar cdigo extenso

36

Globalcode open4education

Frameworks de persistncia

objetos

Framework de persistncia

statements

JDBC

RDBMS

resultsets

objetos

37

Globalcode open4education

Frameworks de persistncia
Alguns Sabores de ORM em Java
Hibernate iBatis Java Persistence API JPA (JSR 220/317) Java Data Objects - JDO (JSR 243)
abstraes para diversos tipos de repositrios, alm do modelo JDBC / banco relacional

Entity Bean CMP (JSR 19/153)

38

Globalcode open4education

Frameworks de persistncia
Mais detalhes em outros mini-cursos MC26, MC31 Globalcode http://www.globalcode.com.br/index.jsp?pa gina=MiniCursos

39

Globalcode open4education

Perguntas e respostas

40

Globalcode open4education

Вам также может понравиться