Integração Com Banco de Dados em Java
Integração Com Banco de Dados em Java
banco de dados
em Java
Prof. Tomás de Aquino
Apresentação
Propósito
Preparação
Objetivos
Módulo 1
Módulo 3
meeting_room
Introdução
Neste conteúdo, analisaremos as ferramentas para acesso a
banco de dados com uso das tecnologias JDBC e JPA,
pertencentes ao ambiente Java, incluindo exemplos de código
para efetuar consulta e manipulação de registros.
Download material
Conceitos básicos
As aplicações de back-end são programas de software que lidam com
tarefas de processamento de dados, lógica de negócios e
gerenciamento de recursos. O middleware permite a comunicação entre
as aplicações front-end e back-end para que a aplicação distribuída
funcione sem problemas.
Front-end e back-end
Quando falamos de front-end, estamos nos referindo à camada de
software responsável pelo interfaceamento do sistema, com o uso de
uma linguagem de programação. Aqui, utilizaremos os aplicativos Java
como opção de front-end.
MQ Series
JBossMQ
ActiveMQ
Microsoft MQ
Middleware
Com diferentes componentes para acesso e modelos de programação
heterogêneos, a probabilidade de ocorrência de erros é simplesmente
enorme, levando à necessidade de uma camada de software
intermediária, responsável por promover a comunicação entre o front-
end e o back-end.
Atenção!
Criando Database.
Tamanho: 10 e Chave
MATRÍCULA VARCHAR
primária
Sem atributos
ENTRADA INTEGER
complementares
Dica
JDBC-Net expand_more
JAVA
content_copy
Atenção!
JAVA
content_copy
Adicionando a biblioteca.
JAVA
content_copy
O uso de parâmetros facilita a escrita do comando SQL, sem a
preocupação com o uso de apóstrofe ou outro delimitador, além de
representar uma proteção contra os ataques do tipo SQL Injection.
Atenção!
Cada parâmetro deve ser preenchido com a chamada ao método
correto, de acordo com seu tipo, como setInt, para inteiro, e setString,
para texto. Após o preenchimento, devemos executar o comando SQL,
com a chamada para executeUpdate, no caso das instruções INSERT,
UPDATE e DELETE, ou executeQuery, para a instrução SELECT.
Atividade 2
Associe corretamente:
1. JDBC-ODBC Bridge
2. JDBC-Native API
3. JDBC-Net
4. Pure Java
A 2, 3, 1, 4.
B 2, 1, 3, 4.
C 1, 4, 2, 3.
D 1, 4, 2, 3.
E 2, 1, 4, 3.
JDBC na prática
Na aprendizagem de qualquer linguagem de programação, os exercícios
práticos são fundamentais para a fixação do conteúdo e entendimento
das particularidades, sintaxe e demais recursos.
Aprenda neste vídeo a criar o banco de dados Java DB, criar a tabela e
incluir um aluno na base de dados.
Roteiro de prática
Nesta prática, utilizaremos como ponto de partida os códigos vistos nas
seções “Banco de Dados Derby” e “Utilização das funcionalidades
básicas do JDBC”. Você deverá implementar os passos a seguir:
A II e III, apenas.
B II e IV, apenas.
D I, II e IV, apenas.
E I e IV, apenas.
Mapeamento objeto-relacional
Torna-se necessário efetuar uma conversão entre os dois modelos de
representação, o que é feito com a criação de uma classe de entidade
para expressar cada tabela do banco de dados, à exceção das tabelas
de relacionamento. Segundo a conversão efetuada, os atributos da
classe serão associados aos campos da tabela, e cada registro poderá
ser representado por uma instância da classe.
JAVA
content_copy
Definida a entidade, podemos mudar a forma de lidar com os dados,
efetuando a leitura dos dados da tabela e alimentando uma coleção que
representará os dados para o restante do programa.
JAVA
content_copy
Atividade 1
Considere o seguinte trecho de código.
JAVA
content_copy
B createStatement e executeQuery.
C executeQuery e close.
D executeQuery e add.
E getConnection e add.
O padrão DAO
Normalmente, temos uma classe DAO para cada classe de entidade
relevante para o sistema. Como a codificação das operações sobre o
banco apresenta muitos trechos comuns para as diversas entidades do
sistema, podemos concentrar as similaridades em uma classe de base,
e derivar as demais, segundo o princípio de herança.
Comentário
JAVA
content_copy
Classe AlunoDAO
Com a classe de base definida, podemos implementar a classe
AlunoDAO, concentrando as operações efetuadas sobre nossa tabela, a
partir da entidade Aluno e da chave primária do tipo String. Veja o início
de sua codificação.
JAVA
content_copy
Atenção!
Como a consulta foi efetuada a partir da chave, sempre retornará um
registro ou nenhum, sendo necessário apenas o comando if para mover
do BOF para o primeiro e único registro. Caso a chave não seja
encontrada, a rotina não entrará nessa estrutura condicional e retornará
um produto nulo.
JAVA
content_copy
JAVA
content_copy
Atividade 2
O uso de comandos SQL dispersos, em meio ao código do aplicativo,
diminui o reuso e aumenta a dificuldade de manutenção. Com base no
padrão de desenvolvimento DAO, temos a concentração dos comandos
SQL em uma única classe, em que existem métodos para o retorno de
entidades, como obterTodos, que estão relacionados ao comando
A INSERT.
B CREATE.
C DELETE.
D SELECT.
E UPDATE
Framework JPA
Atualmente, no ambiente Java, concentramos os frameworks de
persistência sob uma arquitetura própria, conhecida como Java
Persistence Architecture (JPA).
JAVA
content_copy
JAVA
content_copy
Aplicação de JPA
Com os elementos do projeto devidamente configurados, poderíamos
utilizá-los para listar o nome dos alunos, por meio do fragmento de
código apresentado a seguir:
JAVA
content_copy
Observe como o uso de JPA diminui muito a necessidade de
programação nas tarefas relacionadas ao mapeamento objeto-
relacional. Tudo que precisamos fazer é instanciar um EntityManager a
partir da unidade de persistência, recuperar o objeto Query e, a partir
dele, efetuar a consulta por meio do método getResultList, quel já
retorna uma lista de entidades, sem a necessidade de programar o
preenchimento dos atributos.
Atividade 3
A adoção do padrão DAO abriu caminho para a construção de diversos
frameworks de persistência, que simplificam muito as operações sobre
a base de dados, eliminando a necessidade de utilização de comandos
SQL. Entre as diversas opções do mercado, temos uma arquitetura de
persistência denominada JPA, em que as entidades devem ser
gerenciadas por uma classe do tipo
A EntityManager.
B Query.
C Transaction.
D Persistence.
E Factory.
Roteiro de prática
Nesta prática, utilizaremos como ponto de partida os códigos vistos nos
tópicos “Orientação a objetos e o modelo relacional”, “O padrão DAO” e
“Java Persistence Architecture (JPA)”. Você deverá implementar os
passos a seguir:
Atividade 4
Analise o trecho de código e as afirmativas que seguem.
JAVA
content_copy
I. Normalmente, temos uma classe DAO para cada classe de
entidade relevante para o sistema.
II. DAO é um padrão de desenvolvimento, cujo objetivo é concentrar
as instruções SQL em um único tipo de classe.
III. Nesse código, K representa a classe da entidade e E representa a
classe da chave primária.
IV. Nossa classe GenericDAO é abstrata, definindo de forma genérica
as assinaturas para os métodos que acessam o banco.
A II e III, apenas.
B II e IV, apenas.
C I, II e IV, apenas.
E I e IV, apenas.
Classe SistemaEscola
Vamos criar uma classe com o nome SistemaEscola. Observe a seguir
sua codificação inicial, incluindo a definição da instância de AlunoDAO e
os métodos para exibição de valores, tanto para um aluno quanto para o
conjunto completo deles.
JAVA
content_copy
JAVA
content_copy
JAVA
content_copy
O método main permite executar o exemplo, que na prática é bem
simples, oferecendo as opções de listagem, inclusão, exclusão e
término, a partir da digitação do número correto pelo usuário. Feita a
escolha da opção, é necessário apenas ativar o método correto da
classe, entre aqueles que acabamos de codificar.
Gerenciamento de transações
O controle transacional é uma funcionalidade que permite o isolamento
de um conjunto de operações, garantindo a consistência na execução
do processo completo. De modo geral, uma transação é iniciada, as
operações são executadas, e temos ao final uma confirmação do bloco,
com o uso de commit, ou a reversão das operações, com rollback.
Comentário
Com o uso de transações, temos a garantia de que o banco irá desfazer
as operações anteriores à ocorrência de um erro, como na inclusão dos
itens de uma nota fiscal. Sem o uso de uma transação, caso ocorresse
um erro na inclusão de algum item, seríamos obrigados a desfazer as
inclusões que ocorreram antes do erro, de forma programática. Com a
transação, será necessário apenas emitir um comando de rollback.
JAVA
content_copy
Aqui temos a modificação do método excluir para utilizar transações, o
que exige que a conexão seja modificada.
JAVA
content_copy
Atividade 1
Por meio do controle transacional, é possível gerenciar blocos de
operações como uma ação única, que pode ser desfeita pelo banco de
dados sem maiores esforços em termos de programação. Em termos de
JDBC padrão, qual classe é responsável pela transação?
A Transaction
B Connection
C EntityManager
D ResultSet
E Rollback
Executar o sistema.
Executar o sistema.
Atividade 2
Analise o trecho de código e as afirmativas que seguem.
JAVA
content_copy
B I e II, apenas.
C II e III, apenas.
D II, apenas.
E III, apenas.
Passo 1 expand_more
Passo 2 expand_more
Selecionar a opção JDBC correta (escola).
Passo 3 expand_more
Passo 4 expand_more
Passo 5 expand_more
Passo 1 expand_more
Passo 2 expand_more
Seleção de entidades.
Passo 3 expand_more
JAVA
content_copy
JAVA
content_copy
Roteiro de prática
Nesta prática, utilizaremos como ponto de partida os códigos vistos no
tópico “Sistema com JPA no NetBeans”. Você deverá implementar os
passos a seguir:
Executar o projeto.
Atividade 4
Analise o trecho de código e as afirmativas a seguir em relação ao JPA.
JAVA
content_copy
A II e III, apenas.
B II e IV, apenas.
C I, II e IV, apenas.
D I, III e IV apenas.
E I e IV, apenas.
Referências
CORNELL, G.; HORSTMANN, C. Core Java. São Paulo: Pearson, 2010.
DEITEL, P.; DEITEL, H. Java, Como Programar. São Paulo: Pearson, 2010.
Download material