Foi dado como atividade à nossa turma de POO o desenvolvimento de um projeto de consulta a hyperlinks. É possível armazenar urls, nome, data de criação, adicionar comentários e metatags para cada hyperlink, e buscar um destes usando através de qualquer um dos campos (comentários e metatags também).
Meu grupo (eu e mais uma pessoa) escolhemos armazenar tudo em banco de dados, e trabalhar com consultas. Como foi feito em Java com Netbeans, fiquei responsável pela comunicação com o banco, utilizando MySQL e a API JDBC, que tem um driver bem simples de usar. Sugiro a leitura desta apostila da Caelum, pela qual eu também me baseei bastante.
Sobre banco de dados, um resumo básico: criamos tabelas que possuem colunas de "informações", e cada linha corresponde a uma informação. Foram criadas três tabelas, uma armazenando hyperlinks, outra relacionando hyperlinks a comentários e outra, hyperlinks a metatags, através da coluna ID_hyperlink.
ID e ID_Hyperlink iguais representa o mesmo hyperlink |
O banco de dados não se comunica diretamente com Java. No entanto, a API, junto com o driver, fazem a parte do trabalho sujo de compatibilidade de interfaces.
Imagem retirada de apostila da Caelum |
O driver cria uma conexão, e pelo próprio NetBeans enviamos o comando SQL para o banco de dados (por exemplo, inserir hyperlink na tabela Hyperlink). Se for um comando de busca, o MySQL retorna uma lista de resultados da consulta.
Por isso, precisamos de uma classe DAO (Data Acess Object), única responsável pelo acesso ao banco de dados. A classe tem objetivos específicos:
- Inserir um hyperlink;
- Deletar um hyperlink e seus respectivos comentários e metatags;
- Pesquisar e retornar os hyperlinks utilizando um dos atributos como campo de pesquisa (url, nome, data, comentário ou metatag);
- Editar um hyperlink e seus respectivos comentários e metatags.
A classe ainda deve ter um construtor, que cria uma conexão com o banco de dados, e um destrutor, que encerra a conexão.
Para implementar as funções, é suficiente um pouco conhecimento de SQL (select, insert, update, join) e de como funcionam as queries. Um comando select retorna o ResultSet, próprio da API, que é apenas uma lista que possui os atributos indicados pela respectiva coluna equivalente do banco de dados (ou seja, lista[0].nome, lista[0].url...).
O único problema (além dos eventuais bugs) é integrar as tabelas de comentários e metatags à de hyperlinks. No entanto, basta fazer uma busca por todos os ids únicos da tabela de hyperlinks que atendem à busca, e mais duas buscas unindo as tabelas metatag-hyperlink, comentário-hyperlink ordenando por id de hyperlink, e para cada id único da primeira busca percorrer todos que possui em comum o id de hyperlink (em sequência) das demais buscas.
O programa foi feito utilizando como interface gráfica o próprio prompt de comando bem simples, mas bem interessante:
Colocamos o código no github, mas você provavelmente não conseguirá rodar, já que o banco de dados é local: https://github.com/leaomatheus/ProjectBoot
Nenhum comentário:
Postar um comentário