Projecto - Base de Dados em JAVA

S7sRuss

What is folding?
Simulador de BDs – Java com GUI
Criação de um tipo de variáveis (Objectos em Java) para os armazenar num vector desse tipo de dados. Efectuar consulta (devolução de características segundo a introdução de vários parâmetros – únicos?!), trocar posições, inserir no início, inserir no final, código auto-incrementado.

Alguém me pode dar ideias de como fazer?
 
O objectivo deste projecto é criar um programa em JAVA com GUI gera bases de dados. Eu escolhi fazer um para ter uma base de dados dos documentários que tenho. O programa deve conseguir introduzir novos itens, por exemplo, inserir os documentários "Timor Lorosae", "Monumentos Históricos", "Romance and Reality" e os respectivos dados sobre eles, autor, editor, data, etc.
Também deve ter uma espécie de motor de busca que procure documentários segundo determinados parâmetros.
Deve também poder ordenar e visualizar os itens segundo determinados parâmetros e efectuar operações de modificação dos dados.
Deve também ter uma opção de "Actualizar base de dados" que é uma espécie de guardar, que regista todas as alterações efectuadas.

Sou novo em JAVA e gostava que dessem ideias para me ajudar neste projecto. Pode ser ideias sobre uma pequena parte do programa como a operação de ordenação ou sobre o funcionamento geral.

Qualquer comentário é bem-vindo.
 
Se és novo no java aconselho a gravares a tua base de dados em ficheiros de texto.

Depois começa por fazeres o código todo sem GUI. A criação de objectos manual/através do ficheiro, a remoção de uma linha do ficheiro de texto (referente a um objecto), etc..

Depois partes para o GUI. Porque se já tiveres a estrutura do programa feita, fazer o GUI é mais simples..
 
Código:
void GravaClientes(Vector<Cliente> o,String nome_fich)
    {
        try{
            FileOutputStream f_out = new FileOutputStream (nome_fich);     
            ObjectOutputStream obj_out = new ObjectOutputStream (f_out);       
            obj_out.writeObject(o); 
           }catch (IOException e){System.out.print("\nErro a gravar " + nome_fich + ".\n");}
    }      
    
Vector<Cliente> LêClientes(String nome_fich)
    {
         Vector<Cliente> C=new Vector();
        try{
        FileInputStream f_in = new FileInputStream (nome_fich);      
        ObjectInputStream obj_in = new ObjectInputStream (f_in);
        try{ 
           C = (Vector<Cliente>)obj_in.readObject();  
           return C;
           } catch (ClassNotFoundException e){ System.out.print("\nSay what?...");return new Vector();}
          }catch (IOException e){ System.out.print("\nUps..."); return new Vector();}
        
    }
Se ajudar, eu usei mais ou menos este código para um vector de classes do tipo que defini num projecto (suponho que estejas familiarizado com aquela cena toda do "serializable")... :medo:
 
Última edição pelo moderador:
Não sei se o teu projecto é sobre simulador de BD's no sentido lato em que tens que usar uma BD ou se podes usar um ficheiro. Se puderes usar ficheiro é optimo pq é bem mais simples.

Com BD tens de instalar MySQL ou outra cena qq e ligares por JDO ou JDBC cuja implementação é mais complicada, uma vez que estás a tratar com uma base de dados real.

Em relação à dúvida Vector vs. Arraylist a diferença não é mta. O Vector faz parte da base do Java na sua primeira forma, e o Arraylist veio com o JAVA2 ou 1.2 se preferires. Na minha opinião usa-se sempre Arraylist a não ser que se tenha um motivo mto forte para usar Vector, até pq o Arraylist é mais rápido (excepto em multithreading), a única razão para usares Vector será por usares JAVA1 ou por retrocompatibilidade com o mesmo, na minha opinião.
 
Se a tua aplicação é para algo simples, podes usar BD's embebidas -"embedded" - que correm na mesma máquina virtual que a tua aplicação. Escusas então de usar servidores de BD à parte como MySQL ou PostgreSQL. Estas soluções gravam apenas num ficheiro e podes usar o SQL normalmente. As distribuições actuais do java já vêm com o chamado java DB, que na verdade é o Apache Derby , e que podes usar facilmente em aplicações do género das que queres.

http://developers.sun.com/javadb/
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javadb/


Se não queres criar tabelas manualmente nem SQL directo, podes usar soluções de mapeamento objecto-relacional como o JPA e as auas implementações, Hibernate, Toplink, etc. Para mais info, procura no google.

http://en.wikipedia.org/wiki/Java_Persistence_API
http://java.sun.com/developer/technicalArticles/J2EE/jpa/
http://www.hibernate.org/

Ainda podes usar bases de dados orientadas a objectos, onde gravas os teus objectos directamente. Não é preciso mappings manuais, nem muitas anotações complicadas, nem SQL nem tabelas. Tens o DB4O e o Neodatis ODB. Actualmente uso o neodatis odb para a minha tese de mestrado. Ainda está sob forte desenvolvimento e não é tão completo como o db4o, mas a licença é bem melhor.

http://www.neodatis.org/start
http://www.db4o.com
 
Acho que ele nao precisa de base de dados per se..mas sim simular algo.
Tal como ele disse, guadar e procurar numa estrutura de dados tipo Vector ou Hash Map por exemplo.
 
Vou experimentar cada tecnologia BD que me indicaram. Mas de momento dou preferência às BD "embedded", pois pelo conceito deduzo que não necessite de instalar nada mais além da JVM nos outros computadores para por a aplicação a funcionar. Outro aspecto que me agrada ver nas BDs é a opção de Recuperação após Erros.

Para já, programa vai ser construído no... papel :P

Tenho que pensar em módulos pois os módulos podem ser mudados, melhorados, acrescentados, sem afectar o resto do código.

Mas não sei como se faz aplicações em Java por módulos.
Podiam me indicar sites (ou livros, ou ...) para eu aprender.
 
Back
Topo