Bancos de Dados em JSP com NetBeans, JavaDB e Linux
Introdução
No quarto artigo sobre o desenvolvimento voltado à web com Java e NetBeans, abordaremos o uso de bancos de dados. Será utilizado o Java DB como SGBD. O ambiente de programação é o Linux Ubuntu 7.10 com o NetBeans 5.5.
O Java DB é uma distribuição do Apache Derby, mantida pela Sun. Trata-se de um SGBD escrito em Java. É uma opção para aplicações departamentais e para desenvolvimento de aplicações.
Comecemos por iniciar o NetBeans. Caso você ainda não tenha feito o download e instalado, eu recomendo os artigos anteriores: “Java” e “Desenvolver JSP com Ubuntu e NetBeans“.
Configuração
Será necessário criar um diretório para o banco de dados e permitir acesso a outros usuários a esse diretório. Faça isso com o comando:
sudo mkdir /usr/share/sunappserver/javadb/database
sudo chmod 777 /usr/share/sunappserver/javadb/database
Iniciemos por registrar o SGBD no NetBeans. Selecione “Opções” no menu “Ferramentas” e clique no botão “Opções Avançadas”. Expanda o nó “Configuração do IDE” e dentro dele o nó “Configurações de Servidores e Ferramentas Externas”, selecionando “Suporte ao Banco de Dados Java DB”. Preencha o “Localização do Java DB” com “/usr/share/sunappserver/javadb/”. O diretório “/usr/share/sunappserver/javadb/database” deve ser indicado em “Localização do Banco de Dados”. Feche a janela de Opções.
Criação de banco de dados
A partir deste registro é acrescentada a opção “Suporte ao banco de dados Java DB” no menu “Ferramentas” do NetBeans. Utilize essa opção para iniciar o servidor, que passará a aceitar conexões na porta 1527. Volte ao “Suporte ao banco de dados Java DB” para criar um banco de dados novo. Veja na figura abaixo a janela de criação de banco de dados. Preencha os dados solicitados e clique em “OK”.

Para confirmar estas operações vá para a janela à esquerda, selecione a aba “Execução”. Expanda o nó “Bancos de Dados”. Você deve encontrar um nó indicando porta, banco de dados e usuário indicados. Ao expandir este nó você deve encontrar as opções Tabelas, Views e Procedures. Crie uma tabela clicando com o botão direito do mouse no nó “Tabelas”, optando por “Criar tabela” e preenchendo a janela como na figura abaixo.

Outro modo de fazer isso é clicar com o botão direito do mouse no nó “Tabelas”, escolhendo “Executar comando” e digitando a instrução SQL necessária para criar a tabela. Utilize esta segunda forma para inserir dados na tabela. Um dos comandos que eu utilizei foi:
insert into "celebs" ("IDCeleb", "Nome", "Sobrenome") values (1, 'Natalie', 'Portman')
Testando com JSP
Agora estamos prontos para escrevermos nosso documento JSP para acesso ao banco de dados. Crie um novo projeto de Aplicação WEB no NetBeans. Escolha a Estrutura Fonte “Java BluePrints”, por ser mais adequada para uso com o Glassfish, que deve ser selecionado como Servidor. Não escolha nenhum framework. Se tiver alguma dúvida em relação ao Glassfish, veja o artigo “JSP e Glassfish com Ubuntu e NetBeans“.
Procure na janela “Projetos” pelo nó “Bibliotecas”. Clique neste nó com o botão direito do mouse e escolha “Adicionar JAR/Pasta”, incluindo o arquivo “/usr/share/sunappserver/javadb/lib/derbyclient.jar”.
Pool de Conexões
Aplicações web populares podem ter seu desempenho limitado se realizarem conexão e desconexão ao banco de dados a cada utilização. É conveniente o uso de um pool de conexões. Este pool manterá um conjunto de conexões que serão “emprestadas” ao seu aplicativo quando necessário e “devolvidas” após o uso. No NetBeans, procure à esquerda a aba “Execução”, expanda o nó “Servidores”, selecione com o botão direito do mouse o “Sun Java System Application Server” e clique em “Visualizar Console Admin”. Não se esqueça de inicializar o servidor para esta opção funcionar.

Faça o login com a senha atribuída para ele. Na área à esquerda, expanda as opções “Resources”, “JDBC” e selecione “Connection Pools”. Na área à direita, clique no botão “New” para criar um novo pool. Escolha um nome para o pool (“DerbyCeleb”, no meu caso), selecione “javax.sql.DataSource” no “Resource Type” e “JavaDB” no “Database Vendor”. Ao acabar de preencher os dados, clique em “Next”. Na janela seguinte vá até “Properties” e altere os valores de “User” (nome de usuário do banco de dados), “Password” (senha do usuário do banco de dados) e “DatabaseName” (nome do banco de dados). Depois pressione o botão “Finish”. Volte à area esquerda e clique em “JDBC Resources” para que seja exibida a lista de recursos disponíveis; clique no botão “New”. Forneça um nome no campo “JNDI Name” (“jdbc/celebs”, no meu caso) e selecione em “Pool Name” o nome do pool atribuído anteriormente. Clique no botão “OK” e feche o console de administração do Glassfish.
Volte ao NetBeans e procure a aba “Execução” à esquerda da tela. Expanda a seqüência “Servidores”|”Sun Java System Application Server”|”Recursos”|”JDBC”|”Recursos JDBC”. Se o recurso configurado não estiver listado, clique com o botão direito do mouse no nó “Recursos JDBC” e atualize a lista.
Na aba “Projetos” expanda o nó “Arquivos de Configuração” e dê um duplo clique em “web.xml”. Selecione a aba “Referências”, expanda a opção “Referências de Recursos” e clique em “Adicionar”. Digite o nome do recurso (“jdbc/celebs”, neste caso) e clique em “OK”.
O conteúdo de index.jsp deve ficar da seguinte forma:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8" import="javax.sql.DataSource,javax.naming.*,java.sql.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Teste com banco de dados</title>
</head>
<body>
<h1>Teste com banco de dados</h1>
<%
InitialContext derbyC ;
DataSource fonte ;
Connection conexao ;
String sql ;
PreparedStatement ps ;
ResultSet rs ;
try {
derbyC = new InitialContext();
fonte = (DataSource) derbyC.lookup("java:comp/env/jdbc/celebs");
} catch ( Exception e ) {
throw new Exception( e.getMessage() ) ;
}
conexao = fonte.getConnection() ;
sql = "Select \"Nome\", \"Sobrenome\" from \"celebs\" order by 1" ;
ps = conexao.prepareStatement( sql ) ;
rs = ps.executeQuery() ;
while ( rs.next() ) {
out.print( rs.getString("Nome") + " " +
rs.getString("Sobrenome") + "<BR>" ) ;
}
%>
</body>
</html>
Execução do teste
Na área à esquerda, em projetos, selecione com o botão direito do mouse o arquivo index.jsp e clique em “Executar projeto” para ver o resultado.
Achei bem explicativo, agora vou tentar fazer no meu projeto.