Mapear BD dinâmicamente

Galera,
Boa Tarde.

Bom, talvez eu tenha errado no nome do tópico, não sei como chamar o que eu quero fazer, mas, é o seguinte.
Estou desenvolvendo um sistema de Gestão Acadêmica, e, o Banco de Dados deste sistema deves estar todo mapeado dentro da minha aplicação, ou seja, cada entidade dele será uma classe na aplicação, porém o BD possui muitas entidades, e, para criar estas classes vai ser meio complicado :mrgreen:
Então vamos lá… o que eu quero é um modo de criar uma classe que receba o nome da tabela que eu quero utilizar, e, a partir daí, a própria classe cria o objeto com a entidade mapeada, com todos os seus atributos, tudo bonitinho.

Pra começar, eu sei mais ou menos como fazer isso, tenho um método que retorna os campos e os respectivos tipos de dados da tabela que eu quero, agora, o problema que eu tenho é, como faço para criar atributos dinâmicamente, ou seja, eu tenho todos os atributoa da entidade, e quero que eles sejam também os atributos do objeto, tenho seus tipos de dados, e, consequentemente tenho a quantidade de atributos que o objeto deve ter (que é a mesma quantidade de atributos da entidade), porém, esta quantidade de atributos pode variar de entidade para entidade, então, a solução para este probema, é adicionar os atributos dinâmicamente ao objeto, a pergunta é: Como eu faço isso? Como eu crio atributos de forma dinâmica para meu objeto.

Um exemplo seria mais ou meno isso:

Professor (código, nome, matéria)
Aluno(ra, nome, turma)

Quando eu instanciasse essa classe passando o parâmetro Profesor (ClasseSemNome objProfessor = new ClasseSemNome(“Professor”):wink: meu objProfessor teria os atributos código, nome e matéria.
Quando eu instanciasse essa classe passando o parâmetro Aluno (ClasseSemNome objAluno = new ClasseSemNome(“Aluno”):wink: meu objAluno teria os atributos ra, nome e turma.

É só um exemplo besta, mas a idéia é esta.

Obrigado.


Guilherme Dias
gdias1012@gmail.com

Meu caro, não vou dizer que isso que você quer fazer é impossível, mas ao menos, extremamente difícil é…, diria inviável.
Só para você desenvolver isso vai levar um tempão, surgirão inúmeros problemas, vai ter que estudar algumas bibliotecas de manipulação de bytecode, ou alguma forma de geração de código.

Qual a experiência de desenvolvimento com java você tem? Já ouviu falar de mapeamento-objeto-relacional? Se não,procure sobre isso e estude-o. Esse sistema é bem complexo, quanto maior o esquema do banco de dados, maior é o mini-mundo e consequentemente mais complexo é se desenvolver tal sistema.

Boa sorte.

Eu já imaginava que a resposta seria “Inviável”, ou algo desse tipo, mas, isso agora se tornou meio que um objetivo, poderia dar mais algumas informações sobre como desenvolver isto.

Bom, minha experiência com java é apenas acadêmica, eu tenho experiência apenas em .Net, Delphi e C/C++ (kernel’s para Android, ainda começando).
E, sim, eu conheço mapeamento objeto-relacional, aka Hibernate (só conheci ele até hoje, em se tratando de Java), mas, pelo que ví sobre o Hibernate, ele se aplica apenas ao J2EE, e minha aplicação é J2SE, é uma aplicação Desktop, caso esta informação não proceda, pode me indicar algum material sobre a aplicação do mesmo neste tipo de aplicação, repito, em Java, não tenho experiência de mercado, mas, sei “usar a ferramenta”, e, tenho experiência em outra tecnologias, isto pode ajudar, eu acho.

Obrigado

velho pelo netbeans vc consegue já ler o seu banco e criar sua classe da entidade. Quando vc vai criar uma classe, la em categoria tem Persistence e os tipos de arquivos tem um que é classe de entidade de banco de dados ai vc escolhe seu banco e suas tabelas ela já cria suas entidades. Ver se isso serve pra vc ! Vlw

Então, já me recomendaram isso, mas, é que agora eu queria, pelo menos, descobrir uma forma de fazer esse mapeamento da forma que descreví, vão falar que é frescura, pode até ser.

Outro ponto, é que minha aplicação está sendo desenvolvida no Eclipse, e, os outros dois desenvolvedores que estão comigo, argumentam que “não sabem utilizar o Netbeans”, então, fazer por ele poderia dar problema.

Um motivo para este mapeamento deste modo, é que após terminada a aplicação, podem surgir mais entidades a serem incluídas no sistema, isto é um pequeno problema com a esquipe, é mais difícil acabar com a corrupção na política que resolver este problema. Por isso que eu gostaria de fazê-lo desta forma, tenho também um método que cria o formulário de acordo com a(s) entidade(s) a(s) qual(is) ele se refere.

Abraços

Não reinvente a roda, use o Hibernate.

É, acho melhor eu usar Hibernate mesmo, quando estiver com mais tempo volto a pensar nessa idéia.

Obrigado a todos!!