[Dúvida] Projeto p/ Desktop - Utilizar BD ? ou Serializar Objetos e gravar em arquivo?

24 respostas
rafaelob

Pessoal,

Estou com uma dúvida cruel e queria compartilhar com vocês, que certamente devem ter mais esperiência que eu no mundo da programação, vou tentar resumir minha aplicação p/ Desktop, ainda não desenvolvi porque ainda não defini uns detalhes do projeto.

O sistema desktop é basicamente um sistema para um Professor de um colégio qq ou de vários colégios, ele vai ter Colégios diferentes, turmas com alunos. aí vem as notas dos alunos e outros dados …

Eu não queria utilizar BD porquê o objetivo é que o programa seja o mais fácil possível para o Usuário, eu não quero configurar nada na máquina do usuário(professor), quero que ele rode o programa e o mesmo já funcione … Existe algum BD que eu não precise configurar nada na máquina dele? já vai no código mesmo? um install … sei lá, não conheco muito bem, mas quero o sistema já vá pronto para ele, se tiver um BD que faça isso e seja transparente ao usuário seria perfeito para mim, facilitaria minha vida.

Outra opção seria serializar esses objetos e gravar em arquivo… eu estava pensando fazer isso, pois assim o usuário não precisaria configurar um BD nem nada, só gravaria os arquivos e pronto, tá funcionando … leria desse arquivo os dados tbm…

Enfim, essa é a dúvida… pretendo começar a programar no fim do mês.

Obrigado! :smiley:

24 Respostas

F

É necessário ser uma aplicação desktop? Não seria mais interessante ter uma aplicação web?

L

Eu acho melhor, nesse caso, BD. Instala um BD na máquina do professor, nao presica configurar grandes coisas, e roda localmente.

ziegfried

Outra alternativa seria o derby ou o db40 (o segundo é um banco de dados orientado a objetos), que são bancos que só necessitam do JAR respectivo, ou seja, já vão embarcados junto à aplicação.

fabiofalci

Mais opções:
http://developers.sun.com/javadb/
http://www.h2database.com/html/main.html

rafaelob

O sistema Desktop será para todos os professores desse colégio, ou de qualquer outro colégio… Inicialmente eu iria distribuir apenas para o colégio onde eu estudei… mas como eu falei, eu não posso ficar indo de Desktop em Desktop para configurar um BD, o interessante é que seja tudo automático já embutido na aplicacao… Esse BD embarcado, funciona desse jeito??

Eu pensei em serializar os objetos para conseguir esse resultado, portabilidade … não precisar configurar o BD em uma nova máquina, caso o professor queira instalar em qualquer outro local … com esse BD embarcado eu posso exportar os dados? de alguma forma?

Valeu!!

marcelo.bellissimo

Minha sugestão é: faça do jeito certo.

O sistema que você tá fazendo vai precisar de internet, precisa se comunicar entre escolas, do jeito que você está falando… se eu fosse você não perdia tempo com essas maluquices e usava um BD remoto… é o mais correto… ou você cria um servidor com o seu BD, mas o acesso aos dados deve ser unificado, não adianta cada cliente ter uma versão dos dados pra depois ficar fazendo gambiarra entre eles pra “combinar” os dados…

P

Se vc usar o BD embarcado, como o HSQLDB, a única coisa é que junto da sua aplicação irá o .jar do HSQLDB. Não é necessário instalar nada na máquina do cliente, exceto a JVM, claro.

fabiofalci

Os dados serão compartilhados entre os professores/colégios?
Se sim, siga a dica do marcelo.bellissimo.
Se não, então pode usar um BD embarcado mesmo, funciona numa boa.

marcelo.bellissimo

fabiofalci:
Os dados serão compartilhados entre os professores/colégios?
Se sim, siga a dica do marcelo.bellissimo.
Se não, então pode usar um BD embarcado mesmo, funciona numa boa.

Bem, eu acho que, mesmo que não seja compartilhado, até seria uma boa ele usar um BD unificado, remoto… facilitaria a manutenção, pois todos os clientes acessariam um mesmo banco, e se algum deles tiver um problema em sua base, você não precisa se deslocar pro cliente específico ou fazer acesso remoto… basta acessar o seu BD onde ele estiver hospedado e pronto…

rafaelob

Bem, isso seria uma sugestão para um projeto que eu fosse cobrar… meu objetivo é apenas retribuir os anos de bolsa que eu ganhei nesse colégio, os BD não são compartilhado entre professores, inicialmente não … cada professor vai ter seu próprio BD, o que eu queria saber é se seria possível exportar o banco do HSQLDB e do Derby, para caso eu deseje unificar todas as informações…

O inconveniente em se utilizar um BD remoto é que eu não posso contar que o Colégio vai me dar uma máquina para isso, entende? eu só quero oferecer essa ajuda aos professores que ainda utilizam uma CADERNETA , bizarra para ter controle dos alunos. Essa aplicação vai além disso, vai ter correção automática de avaliações e etc.

Bem, desse jeito que eu tou pensando, se o professor precisar utilizar um outro PC, como ele poderia exportar esses dados e colocar nesse outro PC, utilizando esses BDs embarcados? basta copiar o Jar? ou existe uma maneira de exportar esses dados.

Posteriormente, posso considerar a idéia de criar uma aplicação “Manager” que irá receber todos os BDs de cada professor, mas não preciso misturá-los(Ou poderia juntá-los?) e na aplicação mesmo, irá buscar todas as informações dos alunos, etc… isso seria mais para um Coordenador, mas esse módulo do sistema só sairia se eles me pagassem.

Obrigado por todas as respostas, estão sendo de grande valia!

rafaelob

Entendo, mas eu pretendo associar esse sistema a criação de relatórios com o IReport, entende? relatório de avaliação, relatório por semestre … etc…

Aí vem outra pergunta, é possível a comunicação do IReport com esses BD embarcados??

guisantogui

Estou desenvolvendo aqui, e fazendo de ambas maneiras, pois uso o arquivo para mim percorrer meus dados através de um ArrayList que é muito mais simples, mas os dados sempre estão em segurança lá no BD!

rafaelob

Tranquilo, então … nesses BDs embarcados eu posso exportar database ? ou é necessário ficar copiando os jar??

Att,

rafaelob

Ainda estou com essa dúvida… Utilizando o DB embarcado, como o Derby, eu terei que importar o .jar para o meu projeto, certo?! estava dando uma pesquisada sobre isso, mas por exemplo, quando eu exportasse meu projeto para um “jar” o bd já estaria embutido??, eu já faria as conexões no código e tudo certinho, quando eu iniciasse o jar da minha aplicação o DB iria subir também??

rafaelob

Outra dúvida é a seguinte, se eu definir as tabelas e criar tudo direitinho no meu projeto, quando eu exportá-lo ele já irá sair com um “jar” que contêm o BD com as tabelas criadas por mim??! ou terei que criar as tabelas novamente??!

Att,

Hebertbc

Eu fiz uma aplicação desktop para gerar orçamentos: cadastro clientes, itens do orçamento e relatorios…

Utilizei derby + ireport + hibernate … beans binding… e talz

O banco cria uma pasta com as tabelas, me corrija caso esteja errado, vc estava achando que ia salvar os dados dentro do jar?
Se não me engano vc pode configurar o derby pra ser acessado via rede (caso necessite).

Edit: Para a instalação criei um parametro que cria o banco, para facilitar a vida.

Ex.: java -jar jOrcamento.jar -criaDB

Caso necessite ajuda manda um pm

rafaelob

Se grava em uma pasta do meu projeto, eu poderei mandar essa pasta junto com o Jar da minha aplicação certo? assim o cara não precisaria instalar nada a mais??!

Att,

Hebertbc

Isso…
Vc enviaria o jar da aplicação e a pasta do banco

rafaelob

E o Jar do Derby? seria necessário colocá-lo? ou ele estaria “embutido” no jar da aplicação?? outra questão, quando eu uso o netbeans e crio um novo banco nesse projeto, a pasta do banco fica na pasta do projeto?!

Abs e valeu pelas respostas!

Hebertbc

o jar do derby fica junto as bibliotecas no classpath do seu projeto

Qdo vc cria pelo netbeans e executa dele mesmo a pasta do banco vai ficar dentro da pasta do seu projeto.
Segue um exemplo da estrutura

D:\SUPORTE\NETBEANSPROJECTS\JORCAMENTO
+---build
¦   +---classes
¦   ¦   +---.class
¦   +---empty
+---dist (jar)
¦   +---lib (bibliotecas)
+---nbproject
¦   +---private
+---src
¦   +---.java
+---test
+---BD (pasta do banco)
	+--- ...

Ae pra vc botar seu projeto pra funcionar precisaria:

o JAR e pasta LIB encontrados na pasta DIST
o pasta BD
rafaelob

Eu lembro, que tempo atrás eu fiz uma aplicação desktop, e eu só passava o jar para as pessoas, nem passava essa pasta lib e funcionava normalmente, isso porque o meu jar não utilizava uma biblioteca??

WellingtonRamos

Base de dados

HSQLDB - http://hsqldb.org/

Se é um sistema monousuário, não vejo vantagens em fazer um sistema web, mesmo pq pode envolver custos desnecessários.

Mas pode-se utilizar base de dados “remotas” fornecidas por empresas terceiras (envolvendo baixo custo) e “obrigando” o uso de internet para que o mesmo funcione. Com um sistema Desktop com base de dados acompanhando, o professor pode levar, por exemplo, o notebook para onde quiser e, mesmo sem uma rede wi-fi ou física disponível, poderá fazer seu gerenciamento de dados.

WellingtonRamos

A Caderneta ainda é um documento necessário e dependendo da instituição (documento oficial) não podendo ser substituido completamente por sistemas automatizados.

Qdo um sistema como esse vale a pena: Para centralizar os dados de todos os professores, publicação das notas, gestão das atividades pela diretoria escolar. Mas não vai livrar, ainda, os professores da velha caderneta…

WellingtonRamos

Normal pois é acessado via JDBC.
E os bdoo por sua própria forma de programar.

Criado 15 de abril de 2010
Ultima resposta 16 de abr. de 2010
Respostas 24
Participantes 10