Trabalho 2: Banco de dados de linhas de ônibus em Java, JDBC e HSQLDB
Objetivos
O objetivo deste trabalho é exercitar o processo de construção de um aplicativo em Java que acessa um banco de dados relacional.
Requisitos do aplicativo
- A base de dados deve armazenar informações sobre linhas de ônibus em Santa Maria, atendendo aos seguintes requisitos (ATENÇÃO! A base de dados será mais simples do que aquela da prova):
- Manter dados sobre empresas de ônibus que atuam no transporte urbano em Santa Maria (nome, endereço, telefone e site Web).
- Para cada empresa, armazenar dados sobre suas linhas de ônibus, considerando que uma linha é operada por apenas uma empresa. Cada linha de ônibus possui um código, um nome, um único itinerário e um único quadro de horário.
- O itinerário é composto por uma seqüência de logradouros onde situam-se as paradas (p. ex.: Sentido Centro-Bairro: 1-Terminal, 2-Rua Paulo Lauda, 3-Rua Maranhão, etc.). Cada logradouro possui código e nome próprios. Um mesmo logradouro pode estar presente nos itinerários de diferentes linhas.
- O quadro de horário de cada linha indica os horários (hh:mm) de saídas de ônibus em dias úteis. Mantém-se apenas o horário nas paradas de saída, sem registrar-se as paradas intermediárias. Algumas linhas têm maior freqüência de ônibus que outras. Os quadros de horários não são compartilhados pelas diferentes linhas/itinerários.
- O aplicativo deve ter um módulo administrativo que implementa as funções básicas de inserção, leitura, alteração e remoção de dados (Create/Read/Update/Delete - CRUD) sobre empresas, linhas, logradouros, itinerários e quadros de horário.
- O aplicativo deve ter um módulo de consultas que implementa pelo menos 3 das seguintes consultas:
- Obter todas as linhas de uma determinada empresa, dado o nome dessa empresa.
- Obter o itinerário de uma determinada linha de ônibus, dado o código dessa linha.
- Obter o quadro de horário de uma determinada linha, dado seu código.
- Obter as linhas de ônibus que passam por um determinado logradouro, dado o nome desse logradouro.
- A interface com o usuário pode ser textual ou gráfica (usando Swing). Os módulos administrativo e de consultas podem ter interfaces diferentes (por exemplo: uma gráfica e a outra textual).
Metodologia
- Este trabalho será realizado individualmente ou em duplas.
- O banco de dados escolhido para esse trabalho é o HSQLDB, embutido na aplicação (ver exercício prático).
- Comece modelando o banco de dados, definindo entidades, atributos e relacionamentos. Em seguida, crie o esquema lógico relacional em SQL. Você pode gerar o esquema automaticamente usando o Power*Architect (o DBDesigner não gera SQL compatível com o HSQLDB).
- O script SQL para criação do banco pode ser executado diretamente via interface administrativa do HSQLDB (a aplicação não precisa criar as tabelas, somente manipulá-las).
- Implemente a camada de acesso aos dados. Essa camada terá classes que encapsulam chamadas JDBC e implementam o mapeamento objeto-relacional. Veja exemplo no material de apoio.
- Implemente as demais classes que formam os módulos administrativo e de consultas. Essas classes não devem acessar diretamente o banco de dados. Elas devem usar a interface oferecida pela camada de acesso a dados.
- Teste os dois módulos separadamente.
Instruções para entrega
- O trabalho deve ser inserido no portfolio de cada aluno até dia 14/11/08.
- Este componente do portfolio deve ser estruturado conforme as instruções gerais para portfolios. A seção "Resultado" deverá conter no mínimo:
- o script SQL para criação do banco de dados
- o código-fonte em Java
- um exemplo de uso do módulo administrativo
- um exemplo de uso do módulo de consultas
Material de apoio
- Exemplo de aplicativo que usa Java+JDBC+HSQLDB (banco de dados para uma pizzaria):
- Script de criação do banco (createdb.sql)
- Classes que representam os objetos do domínio (domain). Note que nem sempre as classes são mapeadas diretamente em tabelas do banco
- Classes que representam os objetos de acesso a dados (dao)
- JDBC Database Access
Tutorial da Sun sobre JDBC. - SQL Tutorial
Tutorial SQL, com demonstração on-line e guia de referência. - First JDBC Client Example
Exemplo de conexão com banco de dados HSQLDB.