Você sabe para que serve o JDBC — Java Database Connectivity — em uma aplicação Java? Trata-se de uma tecnologia que permite a conexão com diferentes bancos de dados relacionais, como o SQL Server, MySQL ou muitos outros disponíveis no mercado. Se você pretende criar um site nessa linguagem de programação, precisa conhecer esse recurso, pois ele facilita a manipulação de dados no sistema.
Na prática, funciona como uma camada intermediária entre a aplicação e o banco de dados para facilitar e padronizar a comunicação entre eles. Para demonstrar como utilizar esse recurso, preparamos este conteúdo com os seguintes tópicos:
Vamos lá? Boa leitura!
Faça o download deste post inserindo seu e-mail abaixo
Não se preocupe, não fazemos spam.
O JDBC é uma API — Application Programming Interface — do Java que contém uma série de classes e interfaces para realizar a comunicação entre uma aplicação desenvolvida em Java e o banco de dados utilizado por ela. É um recurso antigo do Java, pois está disponível desde a versão 1.1 do JDK — Java Development Kit —, que foi lançada em 1997.
Atualmente, faz parte da plataforma Java SE — Standard Edition — e está na versão 4.3. A arquitetura básica do JDBC é composta por duas camadas específicas:
Existem quatro tipos de drivers JDBC. São eles:
Na prática, o JDBC funciona como uma ponte, ou seja, é uma camada intermediária entre a aplicação e o banco de dados. Ele realiza a interpretação e a conversão dos comandos necessários para a manipulação do banco de dados, de acordo com as características de cada um.
Isso porque, apesar de todos os bancos de dados relacionais utilizarem a linguagem SQL — Structured Query Language —, existem diferenças entre as diversas bases existentes no mercado. Portanto, o JDBC é uma ferramenta responsável por realizar essa comunicação, conforme o banco acessado pela aplicação.
É importante dizer que é preciso utilizar o driver JDBC de acordo com a base de dados utilizada, ou seja, se formos utilizar um banco MySQL, devemos usar o JDBC apropriado para ele. Por isso, cada empresa desenvolvedora de banco de dados disponibiliza o seu próprio driver para ser utilizado no Java.
Ao utilizar o JDBC, devemos passar os dados necessários para fazer a conexão com o banco e as instruções SQL para realizar as operações na base, entre elas, inclusão, alteração, pesquisa ou exclusão de registros. Mais adiante, faremos uma demonstração de como utilizar esse recurso em um site.
Existem diversas razões para utilizar uma base de dados em um site ou em uma aplicação. Confira algumas delas, a seguir.
Podemos armazenar um grande volume de dados em uma base. Portanto, é muito útil para sites que publicam muitas informações, como blogs, e-commerces, aplicações para web, sites institucionais e muitos outros.
Em um banco de dados, podemos realizar pesquisas nos registros armazenados de acordo com algum critério específico. Por exemplo, é possível selecionar rapidamente produtos por determinada categoria e apresentar o resultado em um site de e-commerce.
Outra razão para utilizar esse recurso é a organização dos dados, que são armazenados em tabelas, que podem ser relacionadas entre si. Isso permite o agrupamento de informações de diversas formas. Também podemos incluir, excluir, alterar e listar todo esse conteúdo, além de realizar diferentes tipos de classificação dos dados.
O banco de dados é uma ferramenta essencial para sites de CMS — Content Management System —, que são aqueles que permitem o gerenciamento do conteúdo pelo usuário, como o WordPress. Ao ter os dados do site armazenados em uma base, toda a informação pode ser atualizada por meio da ferramenta de gerenciamento, sem a necessidade de alteração do código fonte.
A utilização de banco de dados é essencial em uma aplicação. O JDBC é uma das tecnologias disponíveis para facilitar essa tarefa. Confira algumas vantagens de sua utilização.
Cada banco de dados contém características próprias. Imagine como seria trabalhoso se tivéssemos que desenvolver toda a interface de comunicação para cada base em que quiséssemos trabalhar. Isso demandaria um grande esforço no desenvolvimento, além de aumentar o esforço com a manutenção desse código.
Como o JDBC permite a utilização com diferentes bancos de dados, essa tarefa é realizada de forma muito mais simples. Além disso, a aplicação pode acessar mais que uma base de dados, o que proporciona maior escalabilidade a ela.
Outra vantagem de utilizar o JDBC é que não é preciso se preocupar com os detalhes de cada base de dados. Na prática, a forma de manipulação de dados será a mesma, seja qual for o banco escolhido.
Nada melhor que um exemplo prático para entendermos como uma ferramenta funciona. Por isso, preparamos um passo a passo para demonstrar como utilizar o JDBC em um site desenvolvido em Java. Nesse exemplo, utilizamos o JSP — Java Server Pages —, que é uma tecnologia para a criação de aplicações dinâmicas em Java para rodar na internet.
Vale ressaltar que existem outras ferramentas e frameworks disponíveis na internet para o desenvolvimento de aplicações web em Java, como Spring, JSF (Java Server Faces) e muitos outros.
Para criar uma aplicação web, utilize a IDE — Integrated Development Environment — de sua preferência. Uma alternativa é o Eclipse ou o IntelliJ IDEA, por exemplo. Não vamos nos aprofundar em como criar uma aplicação web e em como configurar o ambiente, pois nosso foco é mostrar como utilizar o JDBC.
Defina qual banco de dados será utilizado em sua aplicação. Como mencionamos, o JDBC está disponível para diversos SGBDs — Sistema de Gerenciamento de Banco de Dados —, como SQL Server, MySQL, PostgreSQL e muitos outros. Para baixar o drive, visite a página do fabricante da base de dados e faça o download do arquivo (em formato jar — Java Archive) correspondente.
No nosso exemplo, vamos utilizar o driver JDBC para MySQL. Copie o arquivo do driver para a pasta “src/main/webapp/web-inf/lib” de sua aplicação web. Isso é necessário para que o Java possa encontrar os recursos do driver ao rodar a aplicação. É importante dizer que existem outras formas de associar o driver JDBC à aplicação ou à IDE de desenvolvimento.
Agora, precisamos fazer a codificação para realizar a conexão com o banco de dados. Para isso, podemos criar um método chamado getConnection() para retornar o resultado dessa operação.
A vantagem de criar uma função para fazer a conexão é que poderemos reutilizá-la outras vezes na aplicação. Dessa forma, atendemos a um dos princípios da programação orientada a objeto, que é o encapsulamento para possibilitar o reaproveitamento de código. Confira o método, a seguir:
public static Connection getConnection() {
Connection con = null;
try {
Class.forName(“com.mysql.jdbc.Driver”);
con =DriverManager.getConnection(
“jdbc:mysql://localhost:3306/javajdbc”,”root”,””);
} catch (Exception e) {
System.out.println(e);
}
return con;
}
No código acima, utilizamos o comando Class.forName(“nome_do_driver”) para carregar o driver em memória. A seguir, usamos a classe DriverManager, que pertence à API JDBC, para estabelecer a comunicação com o banco de dados. Perceba que existem algumas informações importantes passadas como parâmetro. São elas:
É importante dizer que, em aplicações reais, essas informações devem ser armazenadas em arquivos de configuração e acessadas por meio de código. Dessa forma, atendemos às boas práticas de desenvolvimento e garantimos mais segurança à aplicação.
Vale ressaltar que esses parâmetros modificam de acordo com o banco de dados utilizado. Por isso, é importante consultar a documentação do fabricante para entender como deve ser o comando de conexão correspondente.
No nosso exemplo, vamos listar todas as pessoas cadastradas na tabela “Pessoas” do nosso banco. Para isso, precisamos criar uma classe Pessoa, para descrever os campos que vamos utilizar e definir as funções de gets e sets para elas. Veja o código, a seguir:
package com.javajdbc.model;
public class Pessoa {
private int id;
private String nome;
private String sobrenome;
private int idade;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSobrenome() {
return sobrenome;
}
public void setSobrenome(String sobrenome) {
this.sobrenome = sobrenome;
}
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
}
O próximo passo é escrever a função para acessar o banco de dados e retornar as informações que vamos recuperar. Veja:
public static List<Pessoa> getAllPessoas(){
List<Pessoa> pessoas = new ArrayList<Pessoa>();
try {
Connection con = getConnection();
PreparedStatement stmt =con.prepareStatement(“Select * from pessoas”);
ResultSet resultado = stmt.executeQuery();
while (resultado.next()) {
Pessoa pessoa = new Pessoa();
pessoa.setId(resultado.getInt(“id”));
pessoa.setNome(resultado.getString(“nome”));
pessoa.setSobrenome(resultado.getString(“sobrenome”));
pessoa.setIdade(resultado.getInt(“idade”));
pessoas.add(pessoa);
}
resultado.close();
stmt.close();
}catch (Exception e) {
System.out.println(e);
}
return pessoas;
}
Perceba que chamamos a função getConnection() para estabelecer a comunicação com o banco de dados e armazenamos o resultado na variável “con”. A seguir, utilizamos o objeto PreparedStatement para elaborar a requisição que será feita ao banco de dados com o comando SQL desejado. Confira o trecho, abaixo:
PreparedStatement stmt =con.prepareStatement(“Select * from pessoas”);
Depois, utilizamos o objeto ResultSet para armazenar o resultado do comando realizado no banco de dados. Veja o comando:
ResultSet resultado = stmt.executeQuery();
Na linha seguinte, usamos um laço de repetição while para ler o resultado retornado do banco e armazená-lo na variável “pessoas” do tipo array.
Já fizemos a conexão com o banco de dados e recuperamos os registros armazenados. O próximo passo é exibir essas informações no site. Para isso, vamos criar um arquivo do tipo JSP. Confira o código, abaixo:
<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>
<!DOCTYPE html>
<html>
<head>
<meta charset=“ISO-8859-1”>
<title>Como usar JDBC</title>
</head>
<body>
<%@ page import=“com.javajdbc.dao.PessoaDao, com.javajdbc.model.*, java.util.* “ %>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
<h1>Pessoas</h1>
<%
List<Pessoa> listaPessoas = PessoaDao.getAllPessoas();
request.setAttribute(“listaPessoas”, listaPessoas);
%>
<table>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Sobrenome</th>
<th>Idade</th>
</tr>
<c:forEach items=“${listaPessoas}“ var=“pessoa”>
<tr>
<td>${pessoa.getId()}</td>
<td>${pessoa.getNome()}</td>
<td>${pessoa.getSobrenome()}</td>
<td>${pessoa.getIdade()}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
Perceba que importamos algumas bibliotecas logo após o início da tag body. Elas são necessárias para que possamos utilizar a função getAllPessoas(), que criamos no tópico anterior. Também, para acessar os dados da classe Pessoa, que é como um mapeamento para refletir os campos da nossa tabela do banco de dados.
A seguir, usamos o comando request.setAttribute para utilizar os dados da variável listaPessoas na página JSP. Por fim, usamos um laço de repetição forEach para percorrer os itens da nossa variável e exibir o resultado em uma tabela na página.
O JDBC é uma das tecnologias existentes que possibilitam a comunicação entre uma aplicação e o banco de dados. Demonstramos uma das formas possíveis de utilizar esse recurso, que proporciona vários benefícios, como permitir a utilização de diferentes bases de dados no site e tornar essa tarefa muito mais simples e rápida.
Já que utilizamos o MySQL no nosso exemplo, que tal saber mais sobre essa ferramenta? Confira nosso post que mostra como utilizar esse poderoso banco de dados em um site!