SlideShare uma empresa Scribd logo
JDBC e Hibernate Bancos de dados e mapeamento objeto relacional em Java
Acessar bancos de dados em Java é fácil! Coméquié?
O que? Não acredita? Você só tem que conhecer três interfaces: java.sql.Connection java.sql.Statement java.sql.ResultSet
Código de acesso ao banco Class. forName (&quot;org.h2.Driver&quot;); Connection connection = DriverManager. getConnection (&quot;jdbc:h2:file:database/erp&quot;); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery( &quot;select * from Autor&quot; ); while  ( resultSet.next() ) { System. out .printf(&quot;Linha %s%n&quot;, resultSet.getRow()); for  (  int  x = 1; x <= resultSet.getMetaData().getColumnCount(); x++ ) { System. out .printf(&quot;\tColumn: %s Value %s%n&quot;,  resultSet.getMetaData().getColumnName(x), resultSet.getString( x )); } } connection.close();
E quem é DriverManager?
Statements Executam comandos SQL no banco de dados; Podem executar qualquer tipo de comando, específico ou não, do banco; Precisam de uma conexão aberta;
PreparedStatements Executa comandos DML de forma parametrizada; É mais rápido e mais seguro do que fazer concatenação de Strings; Previne ataques de “SQL Injection”;
PreparedStatements Class. forName ( &quot;org.h2.Driver&quot; ); Connection  connection  = DriverManager. getConnection ( &quot;jdbc:h2:file:database/erp&quot; ); PreparedStatement  statement  = connection .prepareStatement(  &quot;select * from Autor a where a.id = ?&quot;  ); statement .setLong(1, 1); ResultSet  resultSet  =  statement .executeQuery(); while  (  resultSet .next() ) { System. out .printf( &quot;Linha %s%n&quot; ,  resultSet .getRow()); for  (  int   x  = 1;  x  <=  resultSet .getMetaData().getColumnCount();  x ++ ) { System. out .printf( &quot;\tColumn: %s Value %s%n&quot; ,  resultSet .getMetaData().getColumnName( x ), resultSet .getString(  x  )); } } connection .close();
CallableStatement Executa uma “stored procedure” no banco de dados; Pode gerar ResultSets ou apenas o contador de atualização; Sintaxe padronizada para qualquer banco: {? = call <procedure>[<arg1>,<arg2>]}  {call <procedure>[<arg1>,<arg2>]}
Transações em JDBC As transações são definidas no objeto Connection; Para iniciar uma, deve chamar o método “setAutoCommit()” com o valor “false”; Para terminar uma transação, o método “commit()” deve ser chamado;
Transações em JDBC connection .setAutoCommit( false ); connection .setTransactionIsolation(Connection. TRANSACTION_SERIALIZABLE ); PreparedStatement  statement  =  connection .prepareStatement( &quot;select * from Autor&quot; , ResultSet. TYPE_SCROLL_SENSITIVE , ResultSet. CONCUR_UPDATABLE ); ResultSet  resultSet  =  statement .executeQuery(); while  ( resultSet .next()) { resultSet .updateString(4,  &quot;http://maujr.org/&quot; ); resultSet .updateRow(); } try  { connection .commit(); }  catch  (SQLException  e ) { connection .rollback(); }  finally  { connection .close(); }
Tipos de transação TRANSACTION_NONE  – Não há transação; TRANSACTION_READ_COMMITED  – Pode ler dados que foram enviados por outras transações; TRANSACTION_READ_UNCOMMITED  – Pode ler dados ainda não validados por outra transação;
Tipos de transação TRANSACTION_REPEATABLE_READ  – Garante que a mesma query vai retornar os mesmos resultados duas vezes, mas uma “phantom-read” ainda pode acontecer; TRANSACTION_SERIALIZABLE  – Os comandos são enviados de forma seqüencial e não concorrente, os dados vão ser garantidamente gravados e corretamente;
Tipos de ResultSet - Navegação TYPE_FORWARD_ONLY – Navegação sequencial e não percebe atualizações externas TYPE_SCROLL_INSENSITIVE – Navegação total (ida e volta) mas ainda não percebe atualizações externas; TYPE_SCROLL_SENSITIVE – Navegação total e ainda percebe atualizações feitas por outros usuários nos dados do banco;
Tipos de ResultSet - Atualização CONCUR_READ_ONLY – ResultSet de apenas leitura; CONCUR_UPDATABLE – ResultSet atualizável;
THE END E VOCÊ NÃO VIU NADA SER  CLICADO E ARRASTADO...

Mais conteúdo relacionado

PDF
Java orientação a objetos (interfaces)
PDF
Java recursos avançados - socket connection
PDF
Estrutura de linguagem C++
PDF
Event-based Asynchronous Pattern (EAP)
PPTX
Estrutura de decisão switch case
PPT
Tratamento de exceções java
PPTX
Algoritmos 01 - Semana 08 - Estruturas de repetição
ODP
Java 13 Excecoes
Java orientação a objetos (interfaces)
Java recursos avançados - socket connection
Estrutura de linguagem C++
Event-based Asynchronous Pattern (EAP)
Estrutura de decisão switch case
Tratamento de exceções java
Algoritmos 01 - Semana 08 - Estruturas de repetição
Java 13 Excecoes

Mais procurados (20)

DOCX
Logica trabalho
PPT
Aula3
PPT
ASP.Net Módulo 2
PPTX
Estrutura de decisão switch case
PDF
Stored Procedures com PostgreSQL: porque usar.
PPTX
JAVA - Controle de programa
PPTX
Algoritmo 01 - Semana 01
PDF
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
PPTX
Dip the dependency inversion principle
PPTX
Java hidden features
PPTX
Java hidden features
PPTX
Aula 03 - Estruturas de repetição
PPTX
Semana 04 Estruturas Condicionais
PDF
Switchcase
ODP
Palestra Mocks - AgileBrazil 2010
ODP
Java 04 Estrut Controle
PPTX
Algoritmos e Técnicas de Programação - Aula 04
PPTX
Tratamento de exceções em Java
PPTX
Aula 01 - Revisão Algoritmo 1
Logica trabalho
Aula3
ASP.Net Módulo 2
Estrutura de decisão switch case
Stored Procedures com PostgreSQL: porque usar.
JAVA - Controle de programa
Algoritmo 01 - Semana 01
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
Dip the dependency inversion principle
Java hidden features
Java hidden features
Aula 03 - Estruturas de repetição
Semana 04 Estruturas Condicionais
Switchcase
Palestra Mocks - AgileBrazil 2010
Java 04 Estrut Controle
Algoritmos e Técnicas de Programação - Aula 04
Tratamento de exceções em Java
Aula 01 - Revisão Algoritmo 1
Anúncio

Semelhante a Jdbc e hibernate (20)

PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
PDF
Apostila: Curso de java III
PPTX
Java database connectivity jdbc
ODP
PDF
Jdbc, JAVA DATABASE CONNECTIVITY
PDF
Fundamentos de JDBC
PPT
Manipulando Bancos de Dados com JDBC
PDF
Acesso a banco de dados com JDBC
PDF
Silo.tips aula 4-jdbc-java-database-connectivity
PPTX
Banco de Dados MySQL + NetBeans Java + Interface Grafica
PPTX
Introdução ao JDBC - BarreirasJUG
PPTX
Acesso a Banco de Dados em Java usando JDBC
PDF
Fundamentos de JDBC
PDF
Fundamentos de JDBC
PPS
Trabalho teorico de Linguagem de Programação
ODP
Java 16 Jdbc
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Apostila: Curso de java III
Java database connectivity jdbc
Jdbc, JAVA DATABASE CONNECTIVITY
Fundamentos de JDBC
Manipulando Bancos de Dados com JDBC
Acesso a banco de dados com JDBC
Silo.tips aula 4-jdbc-java-database-connectivity
Banco de Dados MySQL + NetBeans Java + Interface Grafica
Introdução ao JDBC - BarreirasJUG
Acesso a Banco de Dados em Java usando JDBC
Fundamentos de JDBC
Fundamentos de JDBC
Trabalho teorico de Linguagem de Programação
Java 16 Jdbc
Anúncio

Mais de Maurício Linhares (20)

PPTX
Mercado de TI
PPTX
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
PPTX
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
PDF
Aprendendo ruby
PDF
Curso java 07 - exceções
PDF
Curso java 08 - mais sobre coleções
PDF
Curso java 06 - mais construtores, interfaces e polimorfismo
PDF
Curso java 05 - herança, classes e métodos abstratos
PDF
Curso java 04 - ap is e bibliotecas
PPTX
Curso java 01 - molhando os pés com java
PDF
Curso java 02 - variáveis
PDF
Curso java 03 - métodos e parâmetros
PDF
Extreme programming
PDF
Feature Driven Development
PDF
Migrando pra Scala
PPTX
Outsourcing e trabalho remoto para a nuvem
PDF
Mercado hoje
PDF
Análise de sistemas oo 1
PDF
Revisão html e java script
PPTX
Aulas de Java Avançado 2- Faculdade iDez 2010
Mercado de TI
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Aprendendo ruby
Curso java 07 - exceções
Curso java 08 - mais sobre coleções
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java 05 - herança, classes e métodos abstratos
Curso java 04 - ap is e bibliotecas
Curso java 01 - molhando os pés com java
Curso java 02 - variáveis
Curso java 03 - métodos e parâmetros
Extreme programming
Feature Driven Development
Migrando pra Scala
Outsourcing e trabalho remoto para a nuvem
Mercado hoje
Análise de sistemas oo 1
Revisão html e java script
Aulas de Java Avançado 2- Faculdade iDez 2010

Jdbc e hibernate

  • 1. JDBC e Hibernate Bancos de dados e mapeamento objeto relacional em Java
  • 2. Acessar bancos de dados em Java é fácil! Coméquié?
  • 3. O que? Não acredita? Você só tem que conhecer três interfaces: java.sql.Connection java.sql.Statement java.sql.ResultSet
  • 4. Código de acesso ao banco Class. forName (&quot;org.h2.Driver&quot;); Connection connection = DriverManager. getConnection (&quot;jdbc:h2:file:database/erp&quot;); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery( &quot;select * from Autor&quot; ); while ( resultSet.next() ) { System. out .printf(&quot;Linha %s%n&quot;, resultSet.getRow()); for ( int x = 1; x <= resultSet.getMetaData().getColumnCount(); x++ ) { System. out .printf(&quot;\tColumn: %s Value %s%n&quot;, resultSet.getMetaData().getColumnName(x), resultSet.getString( x )); } } connection.close();
  • 5. E quem é DriverManager?
  • 6. Statements Executam comandos SQL no banco de dados; Podem executar qualquer tipo de comando, específico ou não, do banco; Precisam de uma conexão aberta;
  • 7. PreparedStatements Executa comandos DML de forma parametrizada; É mais rápido e mais seguro do que fazer concatenação de Strings; Previne ataques de “SQL Injection”;
  • 8. PreparedStatements Class. forName ( &quot;org.h2.Driver&quot; ); Connection connection = DriverManager. getConnection ( &quot;jdbc:h2:file:database/erp&quot; ); PreparedStatement statement = connection .prepareStatement( &quot;select * from Autor a where a.id = ?&quot; ); statement .setLong(1, 1); ResultSet resultSet = statement .executeQuery(); while ( resultSet .next() ) { System. out .printf( &quot;Linha %s%n&quot; , resultSet .getRow()); for ( int x = 1; x <= resultSet .getMetaData().getColumnCount(); x ++ ) { System. out .printf( &quot;\tColumn: %s Value %s%n&quot; , resultSet .getMetaData().getColumnName( x ), resultSet .getString( x )); } } connection .close();
  • 9. CallableStatement Executa uma “stored procedure” no banco de dados; Pode gerar ResultSets ou apenas o contador de atualização; Sintaxe padronizada para qualquer banco: {? = call <procedure>[<arg1>,<arg2>]} {call <procedure>[<arg1>,<arg2>]}
  • 10. Transações em JDBC As transações são definidas no objeto Connection; Para iniciar uma, deve chamar o método “setAutoCommit()” com o valor “false”; Para terminar uma transação, o método “commit()” deve ser chamado;
  • 11. Transações em JDBC connection .setAutoCommit( false ); connection .setTransactionIsolation(Connection. TRANSACTION_SERIALIZABLE ); PreparedStatement statement = connection .prepareStatement( &quot;select * from Autor&quot; , ResultSet. TYPE_SCROLL_SENSITIVE , ResultSet. CONCUR_UPDATABLE ); ResultSet resultSet = statement .executeQuery(); while ( resultSet .next()) { resultSet .updateString(4, &quot;http://maujr.org/&quot; ); resultSet .updateRow(); } try { connection .commit(); } catch (SQLException e ) { connection .rollback(); } finally { connection .close(); }
  • 12. Tipos de transação TRANSACTION_NONE – Não há transação; TRANSACTION_READ_COMMITED – Pode ler dados que foram enviados por outras transações; TRANSACTION_READ_UNCOMMITED – Pode ler dados ainda não validados por outra transação;
  • 13. Tipos de transação TRANSACTION_REPEATABLE_READ – Garante que a mesma query vai retornar os mesmos resultados duas vezes, mas uma “phantom-read” ainda pode acontecer; TRANSACTION_SERIALIZABLE – Os comandos são enviados de forma seqüencial e não concorrente, os dados vão ser garantidamente gravados e corretamente;
  • 14. Tipos de ResultSet - Navegação TYPE_FORWARD_ONLY – Navegação sequencial e não percebe atualizações externas TYPE_SCROLL_INSENSITIVE – Navegação total (ida e volta) mas ainda não percebe atualizações externas; TYPE_SCROLL_SENSITIVE – Navegação total e ainda percebe atualizações feitas por outros usuários nos dados do banco;
  • 15. Tipos de ResultSet - Atualização CONCUR_READ_ONLY – ResultSet de apenas leitura; CONCUR_UPDATABLE – ResultSet atualizável;
  • 16. THE END E VOCÊ NÃO VIU NADA SER CLICADO E ARRASTADO...